2011-06-03 6 views
5

Tôi đang sử dụng python-openCV. Khi sử dụng các phát hiện cạnh Sobel tôi nhận được lỗi khẳng định sau đây:openCV: Phát hiện cạnh Sobel cho tôi lỗi xác nhận

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)) 

tôi tạo dest sử dụng CreateImage() và nó có cùng kích thước và các kênh truyền hình như src. Ngoài ra độ sâu của cả src và dest là IPL_DEPTH_8U. Tôi cũng đã thử tải hình ảnh bằng cách sử dụng LoadImageM() để các hằng số là loại CV_* nhưng điều đó không giúp ích gì.

Tôi cũng xảy ra để tìm hiểu rằng IPL_DEPTH_8U == CV_8Ufalse.

+0

Vâng, tôi đã tự mình gặp lỗi này. Tôi yêu OpenCV, nhưng tôi ghét các thông báo lỗi của họ. Điều này vô cùng hữu ích, đặc biệt đối với người mới, nhưng về cơ bản, điều đó có nghĩa là hình ảnh nguồn và đích của bạn không có cùng định dạng (ví dụ: kích thước pixel khác nhau hoặc số kênh khác nhau). – Cerin

Trả lời

5

Tôi tìm thấy giải pháp một chút khó khăn cho người mới đến 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) 

Điều quan trọng cần lưu ý là các định dạng hình ảnh cần thiết cho các hoạt động không được ghi rõ trong tài liệu tham khảo API và ta nên chú ý rất cẩn thận để tạo lỗi.