2013-06-30 73 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圖像。使用這個分辨率後,一切正常。