【发布时间】:2013-06-30 21:04:11
【问题描述】:
我有一个 Logitech Pro 9000 网络摄像头,现在我尝试学习 OpenCV。我将 OpenCV 2.4.5 与 Python 2.7 一起使用。我在使用更高分辨率的 CvtColor 函数时遇到问题。以下脚本适用于 640x480,但不适用于更高分辨率(800X600 及更高)。
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 函数大小不匹配的原因。
-
相机的最大分辨率为1600x800。我在 OpenCV 中测试了分辨率。 cv.ShowOmage("Video", input_frame) 将在上面的代码中工作。是 cv.CvtColor,高分辨率有问题。
-
能否调试一下,看看input_frame是不是8bitdepth 3通道?
标签: python opencv webcam logitech