1
我有一个Logitech Pro 9000网络摄像头,现在我尝试学习OpenCV。我使用OpenCV 2.4.5和Python 2.7。我在更高分辨率下遇到CvtColor功能问题。以下脚本在640x480下工作,但不支持更高分辨率(800X600及更高)。更高分辨率下的CvtColor错误
import cv
cv.NamedWindow("Video", cv.CV_WINDOW_AUTOSIZE)
camera_index = 1
capture = cv.CaptureFromCAM(camera_index)
cv.SetCaptureProperty(capture,cv.CV_CAP_PROP_FRAME_WIDTH,1200)
cv.SetCaptureProperty(capture,cv.CV_CAP_PROP_FRAME_HEIGHT,800)
grey_frame = cv.CreateImage((1200,800),8,1)
while True:
input_frame = cv.QueryFrame(capture)
cv.CvtColor(input_frame,grey_frame,cv.CV_BGR2GRAY)
cv.WaitKey(5)
cv.ShowImage("Video", grey_frame)
我收到以下错误
cv2.error: dst.data == dst0.data
编辑:解决保存捕获input_frame后。我注意到保存的图像的分辨率与我的设置值不匹配。我将1200x800设置为捕捉属性并获得了1280x800图像。使用这个分辨率后,一切正常。
您的原始相机分辨率是多少?我认为你不能设置高于原始值的捕捉属性的高度和宽度。捕获属性可能已被设置为相机分辨率限制,而不是1200x800。那么这就是为什么你会得到cvtcolor函数的大小不匹配。 – baci
相机的最大分辨率为1600x800。我在OpenCV中测试了分辨率。 cv.ShowOmage(“Video”,input_frame)将在上面的代码中工作。它是cv.CvtColor,它具有较高分辨率的问题。 –
你可以调试,看看input_frame是8bitdepth 3频道吗? – baci