【问题标题】:AttributeError: 'module' object has no attribute 'cv'AttributeError:“模块”对象没有属性“cv”
【发布时间】:2016-12-20 10:28:35
【问题描述】:

我在尝试将 BGR 转换为二进制阈值时遇到以下错误。

imgthreshhold = cv2.inRange(img, cv2.cv.Scalar(3,3,125), cv2.cv.Scalar(40,40,255)) AttributeError: 'module' 对象没有 属性'cv'

以下是完整的程序。

import cv2

cap = cv2.VideoCapture(0)
#help(cv2)
while cap.isOpened():
    #BGR image feed from camera
    ret, img = cap.read()
    cv2.imshow('output', img)
    #BGR to grayscale
    img2 = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    cv2.imshow('grayscale', img2)
    #BGR to binary(RED) thershholded
    imgthreshhold = cv2.inRange(img, cv2.cv.Scalar(3,3,125), cv2.cv.Scalar(40,40,255))
    cv2.imshow('threshholded', imgthreshhold)

    k = cv2.waitKey(10)
    if k==27:
        break

cap.release()
cv2.destroyAllWindows()

我该如何解决这个问题?

【问题讨论】:

  • 是不是 cv2.Scalar 而不是 cv2.cv.Scalar?
  • 没有在我遵循的教程中说它必须参考opencv版本1
  • 你使用什么版本的 OpenCV?
  • 但是可以说我不知道​​你的 OpenCV 版本。您应该删除 cv2.cv.Scalar(3,3,125) 并将其改为 [3,3,125] 和第二个类似。记得import numpy as np
  • Osama Abbas,当我尝试 imgthreshhold = cv2.inRange(img, [3,3,125], [40,40,255]) 我收到以下错误:( TypeError: lowerb is not a numpy array,既不是标量

标签: python opencv


【解决方案1】:

我也遇到过同样的问题。而且我认为我们正在遵循相同的 OpenCV 教程。我稍微弄乱了这个函数,发现只提供值就可以了。

你的代码应该是这样的:

import cv2

cap = cv2.VideoCapture(0)
#help(cv2)
while cap.isOpened():
    #BGR image feed from camera
    ret, img = cap.read()
    cv2.imshow('output', img)
    #BGR to grayscale
    img2 = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    cv2.imshow('grayscale', img2)
    #BGR to binary(RED) thershholded
    imgthreshhold = cv2.inRange(img, (3,3,125), (40,40,255))
    cv2.imshow('threshholded', imgthreshhold)

    k = cv2.waitKey(10)
    if k==27:
        break

cap.release()
cv2.destroyAllWindows()

【讨论】:

    猜你喜欢
    • 2017-11-22
    • 2010-11-18
    相关资源
    最近更新 更多