我想使用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)
加载和显示图像工作正常,但canny和harris转换失败。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
这是固定密码。请参见内联注释。长话短说:你的数据类型是错误的。阅读API。
您可以一步而不是两步将图像转换为灰度:
对于其他对同一类型问题感兴趣的人,我建议签出http://simplecv.org
下面是我编写的一段代码,用于对从网络摄像头获取的图像进行行检测。它甚至可以通过http显示图像。
看看我在http://labs.radiantmachines.com/beard/做的这个项目,它会检测出你脖子上的胡子有多长:)
相关问题 更多 >
编程相关推荐