如何在 c++ 中调用 openCV 中的 cvMorphologyEx?

Posted

技术标签:

【中文标题】如何在 c++ 中调用 openCV 中的 cvMorphologyEx?【英文标题】:How to call cvMorphologyEx in openCV in c++? 【发布时间】:2012-02-20 22:04:10 【问题描述】:

我需要在我的图像处理项目中调用 cvMorphologyEx,我使用这条线来做。

cvMorphologyEx(src1,dest1,NULL,NULL,CV_MOP_OPEN);

它编译得很好,但是在运行时它给了我这个错误

OpenCV 错误:错误标志(参数或结构字段)(无法识别或不支持 ed 数组类型)在未知函数中,文件 ........\ocv\opencv\src\cxcore\cxarr ay.cpp,第 2476 行

我确定问题出在第三个和第四个参数上,但文档说它们是可选的。

如果您需要更多详细信息,请告诉我。

谢谢,

再见

【问题讨论】:

你是对的,第四个参数必须是内核,但无论如何你应该知道这个函数在 OpenCV 4.4.0 中发生了很大变化,因为它变成了只有 4 个参数 cv::morphologyEx(In_Mat_image, Out_Mat_image, CV_MOP_OPEN, image_Kernel); 【参考方案1】:

您必须创建一个 IplConvKernel 并将其传递给函数,否则 cvMorphologyEx 不知道结构元素的大小和形状,因此无法进行任何处理。

int filterSize = 5;
IplConvKernel *convKernel = cvCreateStructuringElementEx(filterSize, filterSize, (filterSize - 1) / 2, (filterSize - 1) / 2, CV_SHAPE_RECT, NULL);

cvMorphologyEx(src1, dest1, NULL, convKernel, CV_MOP_OPEN);

注意结构元素不是可选的!

【讨论】:

以上是关于如何在 c++ 中调用 openCV 中的 cvMorphologyEx?的主要内容,如果未能解决你的问题,请参考以下文章

c++中如何调用opencv库

如何通过C#调用OpenCV函数(自制OpenCV的c++ dll文件)

如何在C语言里调用opencv C++函数?

从 Android 中的本机 c++ 文件调用本机 opencv

如何在 OSX 中使用 C++ opencv highgui 将活动窗口设置为 opencv 图像

c++调用opencv相关函数并打包成dll,c#不能调用