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的主要内容,如果未能解决你的问题,请参考以下文章
请问如何在vs2010下配置opencv2.2,求详细步骤,万分感谢!
有谁用过opencv,可以教教我否?为何都不会安装opencv。在win7下下载一个opencv2.2.0,安装后并没有_make文