如何在 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函数(自制OpenCV的c++ dll文件)
从 Android 中的本机 c++ 文件调用本机 opencv