小编OEP*_*OEP的帖子

cv :: Canny抛出不匹配/不支持的格式异常

我正在做一些非常基本的边缘检测.我的部分实现涉及从自定义Image类复制到cv :: Mat,然后复制回Image.我正在使用这篇文章作为我的指南,用于完成边缘检测和轮廓工作(未在当前列表中显示).在此示例中,PerturbedBorderFilter子类为Image.这是我有的:

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);
}
Run Code Online (Sandbox Code Playgroud)

我最终得到了这个运行时错误:

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
Run Code Online (Sandbox Code Playgroud)

据我所知,'origGray'和'cannyOutput'共享相同的类型,深度和频道数.我不确定我还应该检查什么.

如果以某种方式c​​opyTo()和copyFrom()的实现很重要,我也可以给它们.

一些其他信息:

  1. Class Image的原生颜色空间是RGB,32位浮点深度,值为[0,1].
  2. 目前,copyTo()将图像上下颠倒复制,否则完整.我认为这必须是无关的,但谁知道,也许它是有用的......

opencv edge-detection

0
推荐指数
1
解决办法
2144
查看次数

标签 统计

edge-detection ×1

opencv ×1