0
我正在做一些非常基本的边缘检测的东西。我的部分实现涉及将自定义Image类复制到cv :: Mat,然后复制回Image。我正在使用this article作为我的指南,以获取边缘检测和轮廓工作(未在当前列表中显示)。在此示例中,PerturbedBorderFilter子类为Image。以下是我有:cv :: Canny抛出不匹配/不支持的格式异常
void PerturbedBorderFilter::performFilter(const Image& src)
{
int h = src.Height(), w = src.Width();
cv::Mat
orig(h, w, CV_32FC3),
cannyOutput(h,w,CV_32FC1),
origGray(h,w,CV_32FC1);
src.copyTo(orig);
cv::cvtColor(orig, origGray, CV_RGB2GRAY);
cv::blur(origGray, origGray, cv::Size(3,3));
cv::Canny(origGray, cannyOutput, 0.1, 0.2, 3);
copyFrom(cannyOutput);
}
我结束了这种运行时错误:
OpenCV Error: Unsupported format or combination of formats() in cvCanny, file /build/buildd/opencv-2.3.1/modules/imgproc/src/canny.cpp, line 67
terminate called after throwing an instance of 'cv::Exception'
what(): /build/buildd/opencv-2.3.1/modules/imgproc/src/canny.cpp:67: error: (-210) in function cvCanny
从我可以告诉,“origGray”和“cannyOutput”共享相同的类型,深度和通道计数。我不知道还有什么我应该检查。
如果以某种方式执行copyTo()和copyFrom()很重要,我也可以给出这些。
一些额外的信息:
- 类图像的原始颜色空间是RGB,32位浮点深度,具有值[0,1]。
- 目前,copyTo()将图像上下颠倒但是完好无损。我认为这必须是无关的,但谁知道,也许它是有用的...
谢谢!这是我的问题......是的,它在文档中说得很对。哎呀。 – OEP