Я хочу использовать алгоритмы обнаружения краев из библиотеки opencv.
Вот фрагмент кода Python:
from opencv.cv import *
from opencv.highgui import *
img = cvLoadImage ('xxx.jpg')
cvNamedWindow ('img')
cvShowImage ('img', img)
cvWaitKey ()
canny = cvCreateImage (cvSize (img.width, img.height), 8, 3)
cvCanny (img, canny, 50, 200)
harris = cvCreateImage (cvSize (img.width, img.height), 8, 3)
cvCornerHarris (img, harris, 5, 5, 0.1)
Загрузка и показ изображения работают нормально, но преобразования Канни и Харриса не удаются.
cvCanny
не удается с:
RuntimeError: openCV Error:
Status=Unsupported format or combination of formats
function name=cvCanny
error message=
file_name=cv/cvcanny.cpp
line=72
и cvCornerHarris
завершаются с ошибкой:
RuntimeError: openCV Error:
Status=Assertion failed
function name=cvCornerHarris
error message=src.size() == dst.size() && dst.type() == CV_32FC1
file_name=cv/cvcorner.cpp
line=370
Из этого сообщения я могу сделать вывод, что загруженное изображение имеет неверный формат. Но я не понимаю, как это преобразовать.
Вот значения некоторых полей img
:
img.type = 1111638032
img.nChannels = 3
img.depth = 8