帮人做非法网站吗,做资源网站盈利点,深圳外贸行业,广州网站设计制作公司操作系统#xff1a;ubuntu22.04 OpenCV版本#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言#xff1a;C11
算法描述
计算轮廓的面积。
该函数计算轮廓的面积。与 moments 类似#xff0c;面积是使用格林公式计算的。因此#xff0c;返回的面积与你使用 drawCo… 操作系统ubuntu22.04 OpenCV版本OpenCV4.9 IDE:Visual Studio Code 编程语言C11
算法描述
计算轮廓的面积。
该函数计算轮廓的面积。与 moments 类似面积是使用格林公式计算的。因此返回的面积与你使用 drawContours 或 fillPoly 绘制轮廓时的非零像素数量可能会不同。此外对于自相交的轮廓该函数很可能会给出错误的结果。 例子
vectorPoint contour;
contour.push_back(Point2f(0, 0));
contour.push_back(Point2f(10, 0));
contour.push_back(Point2f(10, 10));
contour.push_back(Point2f(5, 4));
double area0 contourArea(contour);
vectorPoint approx;
approxPolyDP(contour, approx, 5, true);
double area1 contourArea(approx);
cout area0 area0 endl area1 area1 endl approx poly vertices approx.size() endl;函数原型 double cv::contourArea
(InputArray contour,bool oriented false
) 参数
参数contour 输入的二维点向量轮廓顶点存储在 std::vector 或 Mat 中参数oriented 有向面积标志。如果该值为真则函数会返回一个根据轮廓方向顺时针或逆时针而定的带符号的面积值。利用此功能可以通过获取面积的符号来确定轮廓的方向。默认情况下该参数为假这意味着返回的是绝对值。
代码示例 #include iostream
#include opencv2/opencv.hppint main()
{// 创建一个简单的二值图像cv::Mat img cv::Mat::zeros( 300, 300, CV_8UC1 );// 添加一个矩形轮廓cv::rectangle( img, cv::Rect( 50, 50, 100, 100 ), cv::Scalar( 255 ), cv::FILLED );// 显示原始二值图像cv::imshow( Binary Image, img );// 查找图像中的轮廓std::vector std::vector cv::Point contours;std::vector cv::Vec4i hierarchy;cv::findContours( img, contours, hierarchy, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_SIMPLE );// 计算每个轮廓的面积for ( const auto contour : contours ){double area cv::contourArea( contour );std::cout Contour area (absolute): area std::endl;// 计算带符号的面积double oriented_area cv::contourArea( contour, true );std::cout Contour oriented area: oriented_area std::endl;}// 绘制轮廓cv::drawContours( img, contours, -1, cv::Scalar( 128 ), 2 );// 显示带有轮廓的图像cv::imshow( Image with Contour, img );cv::waitKey( 0 );cv::destroyAllWindows();return 0;
}运行结果
终端输出
Contour area (absolute): 9801
Contour oriented area: -9801
图像输出