成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Opencv如何提取連通區(qū)域輪廓

小編給大家分享一下Opencv如何提取連通區(qū)域輪廓,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

靜寧ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!

在進行圖像分割后,可能需要對感興趣的目標區(qū)域進行提取,比較常用的方法是計算輪廓。

通過輪廓可以獲得目標的一些信息:

(1)目標位置

(2)目標大?。疵娣e)

(3)目標形狀(輪廓矩)

當然,輪廓不一定代表希望目標區(qū)域,閾值分割時可能造成一部分信息丟失,因此可以計算輪廓的質(zhì)心坐標,再進行漫水填充。

程序中有尋找質(zhì)心+填充,但效果不好,因此就不放填充后的圖了。

Opencv如何提取連通區(qū)域輪廓

實驗結(jié)果:

#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <stdio.h>
 
using namespace cv;
using namespace std;
 
vector<vector<Point> > contours; //輪廓數(shù)組
vector<Point2d> centers; //輪廓質(zhì)心坐標 
vector<vector<Point> >::iterator itr; //輪廓迭代器
vector<Point2d>::iterator itrc; //質(zhì)心坐標迭代器
vector<vector<Point> > con; //當前輪廓
 
 
int main()
{
 double area;
 double minarea = 100;
 double maxarea = 0;
 Moments mom; // 輪廓矩
 Mat image,gray,edge,dst;
 namedWindow("origin");
 namedWindow("connected_region");
 
 image = imread("view.jpg");
 cvtColor(image, gray, COLOR_BGR2GRAY);
 blur(gray, edge, Size(3,3)); //模糊去噪
 threshold(edge,edge,200,255,THRESH_BINARY); //二值化處理
 
 /*尋找輪廓*/
 findContours( edge, contours,
 CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE );
 itr = contours.begin(); //使用迭代器去除噪聲輪廓
 while(itr!=contours.end())
 {
 area = contourArea(*itr);
 if(area<minarea)
 {
 itr = contours.erase(itr); //itr一旦erase,需要重新賦值
 }
 else
 {
 itr++;
 }
 if (area>maxarea)
 {
 maxarea = area;
 }
 }
 dst = Mat::zeros(image.rows,image.cols,CV_8UC3);
 
 /*繪制連通區(qū)域輪廓,計算質(zhì)心坐標*/
 Point2d center;
 itr = contours.begin();
 while(itr!=contours.end())
 {
 area = contourArea(*itr);
 con.push_back(*itr);
 if(area==maxarea)
 drawContours(dst,con,-1,Scalar(0,0,255),2); //最大面積紅色繪制
 else
 drawContours(dst,con,-1,Scalar(255,0,0),2); //其它面積藍色繪制
 con.pop_back();
 
 //計算質(zhì)心
 mom = moments(*itr);
 center.x = (int)(mom.m10/mom.m00);
 center.y = (int)(mom.m01/mom.m00);
 centers.push_back(center);
 
 itr++;
 }
 imshow("origin",image);
 imshow("connected_region",dst);
 waitKey(0);
 
 /*漫水填充連通區(qū)域*/
 Point2d seed;
 int new_scalar = 0;
 int loDiff = 8, upDiff = 8;
 int connectivity = 4; 
 
 itrc = centers.begin();
 while(itrc!=centers.end())
 { 
 seed = *itrc;
 floodFill(image,seed,Scalar::all(new_scalar),NULL,
 Scalar::all(loDiff),Scalar::all(upDiff),connectivity);
 itrc++;
 }
 
 waitKey(0);
 return 0 ;
}

以上是“Opencv如何提取連通區(qū)域輪廓”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

網(wǎng)站名稱:Opencv如何提取連通區(qū)域輪廓
分享網(wǎng)址:http://jinyejixie.com/article0/pdcdio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、商城網(wǎng)站、Google、外貿(mào)建站、微信小程序、網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計公司
临夏县| 乳山市| 阜康市| 罗源县| 吐鲁番市| 渑池县| 习水县| 东光县| 宁河县| 福安市| 梅河口市| 如皋市| 安国市| 陇川县| 开封市| 武夷山市| 太谷县| 玉林市| 左云县| 墨竹工卡县| 峨眉山市| 邓州市| 南岸区| 泽州县| 明光市| 南川市| 酒泉市| 凉城县| 湖口县| 垦利县| 隆安县| 保靖县| 镇康县| 汉源县| 天水市| 司法| 灯塔市| 东港市| 台中县| 潞西市| 淮阳县|