2013-06-30 59 views
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图像。使用这个分辨率后,一切正常。

+0

您的原始相机分辨率是多少?我认为你不能设置高于原始值的捕捉属性的高度和宽度。捕获属性可能已被设置为相机分辨率限制,而不是1200x800。那么这就是为什么你会得到cvtcolor函数的大小不匹配。 – baci

+0

相机的最大分辨率为1600x800。我在OpenCV中测试了分辨率。 cv.ShowOmage(“Video”,input_frame)将在上面的代码中工作。它是cv.CvtColor,它具有较高分辨率的问题。 –

+0

你可以调试,看看input_frame是8bitdepth 3频道吗? – baci

回答

0

保存捕获的input_frame后。我注意到保存的图像的分辨率与我的设置值不匹配。我将1200x800设置为捕捉属性并获得了1280x800图像。使用这个分辨率后,一切正常。