日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OpenCV——计算轮廓长度/周长和面积

發(fā)布時間:2024/3/24 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenCV——计算轮廓长度/周长和面积 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

輪廓面積

輪廓面積是指每個輪廓中所有的像素點圍成區(qū)域的面積,單位為像素。

double contourArea( InputArray contour, bool oriented = false );
  • contour:輪廓的像素點
  • oriented:區(qū)域面積是否具有方向的標志,true表示面積具有方向性,false表示不具有方向性,默認值為不具有方向性的false。

函數(shù)的返回值是統(tǒng)計輪廓面積的結果,數(shù)據(jù)類型為double。函數(shù)第一個參數(shù)表示輪廓的像素點,數(shù)據(jù)類型為vector或者Mat,相鄰的兩個像素點之間逐一相連構成的多邊形區(qū)域即為輪廓面積的統(tǒng)計區(qū)域。連續(xù)的三個像素點之間的連線有可能在同一條直線上,因此為了減少輸入輪廓像素點的數(shù)目,可以只輸入輪廓的頂點像素點,例如一個三角形的輪廓,輪廓中可能具有每一條邊上的所有像素點,但是在統(tǒng)計面積時可以只輸入三角形的三個頂點。函數(shù)第二個參數(shù)是區(qū)域面積是否具有方向的標志,參數(shù)為true時表示統(tǒng)計的面積具有方向性,輪廓頂點順時針給出和逆時針給出時統(tǒng)計的面積互為相反數(shù);參數(shù)為false時表示統(tǒng)計的面積不具有方向性,輸出輪廓面積的絕對值。?

輪廓長度?/周長

double arcLength( InputArray curve, bool closed );
  • curve:輪廓或者曲線的2D像素點。
  • closed:輪廓或者曲線是否閉合標志,true表示閉合。

該函數(shù)能夠統(tǒng)計輪廓或者曲線的長度,函數(shù)返回值為統(tǒng)計長度,單位為像素,數(shù)據(jù)類型為double。函數(shù)的第一個參數(shù)是輪廓或者曲線的2D像素點,數(shù)據(jù)類型為vector或者Mat。函數(shù)的第二個參數(shù)是輪廓或者曲線是否閉合的標志,true表示閉合。

函數(shù)統(tǒng)計的長度是輪廓或者曲線相鄰兩個像素點之間連線的距離,例如計算三角形三個頂點A、B和C構成的輪廓長度時,并且函數(shù)第二個參數(shù)為true時,統(tǒng)計的長度是三角形三個邊AB、BC和CA的長度之和;當參數(shù)為false時,統(tǒng)計的長度是由A到C三個點之間依次連線的距離長度之和,即AB和BC的長度之和。

簡單示例

// // Created by smallflyfly on 2021/6/22. //#include "opencv2/opencv.hpp" #include <iostream>using namespace std; using namespace cv;int main() {Mat im = imread("rice.jfif");resize(im, im, Size(0, 0), 0.5, 0.5);Mat gray;cvtColor(im, gray, CV_BGR2GRAY);Mat imBin;threshold(gray, imBin, 125, 255, THRESH_BINARY);vector<vector<Point>> contours;findContours(imBin, contours, RETR_EXTERNAL, CHAIN_APPROX_NONE);drawContours(im, contours, -1, Scalar(255, 0, 255));for (int i = 0; i < contours.size(); ++i) {double area = contourArea(contours[i]);double length = arcLength(contours[i], true);cout << "area: " << area << " " << "length: " << length << endl;}imshow("im", im);waitKey(0);destroyAllWindows();return 0;}

總結

以上是生活随笔為你收集整理的OpenCV——计算轮廓长度/周长和面积的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。