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