【发布时间】: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,既不是标量