contourArea计算的是什么面积?感觉很不准啊
opencv吧
全部回复
仅看楼主
level 2
576506619 楼主
新人刚刚开始学习OPENCV,有一个小问题,OPENCV中的contourArea计算的是轮廓面积,这个轮廓指的是还是轮廓包围的面积嘛?
我想计算图一中那个叶片的面积。我把2个结果一对比发现相差不大,请问该怎么设计?
2016年11月24日 07点11分 1
level 2
576506619 楼主
//边缘检测
Canny(gray, canny_output, 15, 30, 3);
//寻找轮廓
findContours(canny_output, g_Contours, Hierarchy, RETR_EXTERNAL, CHAIN_APPROX_NONE, Point(0, 0));
//计算矩
vector<Moments> mu(g_Contours.size());
for(unsigned int i = 0; i<g_Contours.size(); i++)
{
mu[i] = moments(g_Contours[i], false);
}
//计算中心矩
vector<Point2f> mc(g_Contours.size());
for (unsigned int i = 0; i<g_Contours.size(); i++)
{
mc[i] = Point2f(static_cast<float>(mu[i].m10/mu[i].m00), static_cast<float>(mu[i].m01 / mu[i].m00));
}
//绘制轮廓
Mat drawing = Mat::zeros(canny_output.size(), CV_8UC3);
Area = 0;
for (unsigned int i = 0; i < g_Contours.size(); i++)
{
drawContours(drawing, g_Contours, i, 255, 2, 8, Hierarchy, 0, Point());
//绘制圆
circle(drawing, mc[i], 4, 255, -1, 8, 0);
Area = Area + contourArea(g_Contours[i]);
}
resize(drawing, drawing, Size(drawing.cols / 2, drawing.rows / 2), (0, 0), (0, 0), 3);
imshow(window_name2, drawing);
printf("计算出的轮廓面积:m00=%0.2f\n", Area);
2016年11月24日 07点11分 2
level 3
————这个轮廓指的是还是轮廓包围的面积嘛?
----我想计算图一中那个叶片的面积。我把2个结果一对比发现相差不大,请问该怎么设计?
文字表达,我看不懂;楼主讲的是什么?谁跟谁对比,比什么?[汗]
2016年11月28日 05点11分 3
level 2
有opencv教学资源可以分享嘛?本人读研方向机器视觉,以后可以一起交流呗
2016年11月30日 07点11分 4
level 1
是有很大误差的,不是边缘点,是边缘1个像素的中心点,所以面积误差的,很多没发现这个问题。
2024年03月13日 05点03分 5
1