OpenCv2.2 C++ filter2D

Posted

技术标签:

【中文标题】OpenCv2.2 C++ filter2D【英文标题】: 【发布时间】:2014-02-22 18:04:31 【问题描述】:

我正在使用 OpenCv2.2 将 matlab 代码传输到 c++,在一个类似于 matlab 的函数 (conv2) 中,我使用来自

的 filter2D
#include <opencv2/imgproc/imgproc.hpp>

问题是我收到的错误消息:

OpenCV 错误:未实现功能/功能(源格式 (=4) 和目标格式 (=4) 的不支持组合) 在 getLinearFilter 中,文件 C:\opencv\sources\modules\imgproc\src\filter.cpp,第 3234 行

在抛出 'cv::Exception' 实例后调用终止

what(): C:\opencv\sources\modules\imgproc\src\filter.cpp:3234: 错误: (-213) 源格式 (=4) 和目标格式 (=4) 的不支持组合 在函数getLinearFilter

这是我第一次看到这样的错误。所以,我真的不知道这是来自我的安装还是来自代码。

================================================ ============================================== 附件:

代码:

void conv2(const Mat &img, const Mat& kernel, ConvolutionType type, Mat& dest)

    // fonction trouvée sur le site :
    // http://blog.timmlinder.com/2011/07/opencv-equivalent-to-matlabs-conv2-function/
    // par  Timm Linder le 05/07/2011
  Mat source = img;
  if(CONVOLUTION_FULL == type) 
    source = Mat();
    const int additionalRows = kernel.rows-1, additionalCols = kernel.cols-1;
    copyMakeBorder(img, source, (additionalRows+1)/2, additionalRows/2, (additionalCols+1)/2, additionalCols/2, BORDER_CONSTANT, Scalar(0));
  

  Point anchor(kernel.cols - kernel.cols/2 - 1, kernel.rows - kernel.rows/2 - 1);
  int borderMode = BORDER_CONSTANT;

  filter2D(source, dest, img.depth(), flip(kernel), anchor, 0, borderMode);

  //cvFilter2D(source, dest, img.depth(), flip(kernel), anchor, 0, borderMode);

  if(CONVOLUTION_VALID == type) 
    dest = dest.colRange((kernel.cols-1)/2, dest.cols - kernel.cols/2)
               .rowRange((kernel.rows-1)/2, dest.rows - kernel.rows/2);
  

在此博客上找到: http://blog.timmlinder.com/2011/07/opencv-equivalent-to-matlabs-conv2-function/ (如果有人有更好的想法来重现可能很有趣的 conv2)

【问题讨论】:

【参考方案1】:

看着filter2d docs,- 很明显,您不能使用 int32 Mats (type()==4)。

您必须转换为 CV_8U、CV_16U、CV_32F、CV_64F 之一

(也可以考虑更新你的 opencv。2.2 已经很旧了)

【讨论】:

感谢您的快速响应,我将 Mat 的格式从 CV_32S 更改为 CV_32F,错误消失了。 (由于我远离我的领域,欢迎我在博客文章下找到的 cmets)但仍然感谢您的回答。

以上是关于OpenCv2.2 C++ filter2D的主要内容,如果未能解决你的问题,请参考以下文章

无法将 opencv2-2 框架添加到 iOS 项目

请问如何在vs2010下配置opencv2.2,求详细步骤,万分感谢!

在不同的目录中安装 opencv 2.2

有谁用过opencv,可以教教我否?为何都不会安装opencv。在win7下下载一个opencv2.2.0,安装后并没有_make文

使用vs2010调试时opencv2.2 库函数的源代码看不到

OpenCV 2.2 窗口导致 OpenGL 出现问题