openCV: обнаружение края Собеля дает мне ошибку утверждения - PullRequest
5 голосов
/ 03 июня 2011

Я использую python-openCV. При использовании обнаружения краев Собеля я получаю следующую ошибку утверждения:

src.size() == dst.size() && src.channels() == dst.channels() && ((src.depth() == CV_8U && (dst.depth() == CV_16S || dst.depth() == CV_32F)) || (src.depth() == CV_32F && dst.depth() == CV_32F))

Я создаю dest, используя CreateImage(), и он имеет тот же размер и каналы, что и src. Также глубина как src, так и dest является IPL_DEPTH_8U. Я также попытался загрузить изображение, используя LoadImageM(), чтобы константы имели вид CV_*, но это не помогло.

Я также обнаружил, что IPL_DEPTH_8U == CV_8U - это false.

1 Ответ

5 голосов
/ 03 июня 2011

Я нашел решение немного сложным для новичков в openCV:

src = cv.LoadImageM('src.png', cv.CV_LOAD_IMAGE_GRAYSCALE)
dest = cv.CreateMat(src.height, src.width, cv.CV_16S)
cv.Sobel(src, dest, 1, 1)

Важно отметить, что форматы изображений, необходимые для операций, недостаточно четко документированы в ссылках API, и следует очень внимательно следить за возникающими ошибками.

...