2013-06-30 3 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이 8 비트 깊이 3 채널인지 여부를 디버깅하고 확인할 수 있습니까? – baci

답변

0

캡처 된 input_frame을 저장 한 후. 저장된 이미지의 해상도가 설정 한 값과 일치하지 않는 것으로 나타났습니다. 캡처 속성으로 1200x800을 설정하고 1280x800 이미지를 얻었습니다. 이 해상도를 사용한 후에 모든 것이 잘 동작했습니다.

관련 문제