У меня есть веб-камера 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
EDIT: решаемые После сохранения захваченного input_frame. Я заметил, что разрешение сохраненного изображения не соответствует моим заданным значениям. Я установил 1200x800 как свойства захвата и получил изображение 1280x800. После использования этого разрешения все работало нормально.
Каково ваше первоначальное разрешение камеры? Я думаю, вам не разрешено устанавливать свойства захвата высоты и ширины выше исходных значений. Вместо 1200x800 свойство захвата может быть установлено на ограничение разрешения камеры. Тогда это будет причиной того, что вы получаете несоответствие размера для функции cvtcolor. – baci
Максимальное разрешение камеры - 1600x800. Я протестировал разрешение в OpenCV. cv.ShowOmage («Видео», input_frame) будет работать в вышеуказанном коде. Это cv.CvtColor, у которого есть проблема с более высоким разрешением. –
можете ли вы отлаживать и видеть, является ли входной кадр 8-битным 3-мя каналами или нет? – baci