gpt4 book ai didi

c++ - 在OpenCV中匹配Matlab的regionprop(x ,'Area')

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:30:40 24 4
gpt4 key购买 nike

我需要模仿 Matlab 的 regionprop(BW,'Area') 用 OpenCV 做的事情。

我在 Matlab 中有这段代码

[L,N]           = bwlabel(image1,8);
S = regionprops(L,'Area','PixelIdxList');
output=[];
for i=1:N,
output(i)=S(i).Area;
end

在 OpenCV 中

cv::findContours(cvImageMat,contours,CV_RETR_LIST,CV_CHAIN_APPROX_NONE);
int iNumSegments = contours.size();
for(int i=0;i<iNumSegments;i++)
{
cv::vector<cv::Point> approx;
cv::approxPolyDP(cv::Mat(contours[i]), approx, 1.0e-10, true);
double area = fabs( cv::contourArea( approx ) );
dvResult.push_back(area);
}

但是对于大小为 2048 x 2048 的图像,计算的两个区域之间的每个差异大约为 400。他们对我来说应该是一样的。有人对此有什么建议吗?

最佳答案

最终创建了我自己的函数。

double cvArea(cv::Mat mat, cv::vector<cv::vector<cv::Point>> &contours, int index)
{
cv::Mat mask = cv::Mat::zeros(mat.cols,mat.rows,CV_8UC1);
cv::drawContours(mask,contours,index,cv::Scalar(1),CV_FILLED);
return cv::sum(mask).val[0];
}

关于c++ - 在OpenCV中匹配Matlab的regionprop(x ,'Area'),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12732379/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com