久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

OpenCV-尋找輪廓cv::findContours&繪制輪廓cv::drawContours

 翟天保的圖書館 2022-01-13

作者:翟天保Steven
版權(quán)聲明:著作權(quán)歸作者所有,商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處

函數(shù)原型

void findContours( InputArray image, OutputArrayOfArrays contours,
                              OutputArray hierarchy, int mode,
                              int method, Point offset = Point());

void drawContours( InputOutputArray image, InputArrayOfArrays contours,
                              int contourIdx, const Scalar& color,
                              int thickness = 1, int lineType = LINE_8,
                              InputArray hierarchy = noArray(),
                              int maxLevel = INT_MAX, Point offset = Point() );

參數(shù)說明

? ? ? ?findContours:

  1. InputArray類型的image,輸入圖像,需是8位單通道圖像,。非零像素視為1,0像素為0,二進(jìn)制表示,。
  2. OutputArrayOfArrays類型的contours,檢測到的輪廓結(jié)果存放在此,每個(gè)輪廓存儲為一個(gè)點(diǎn)向量,用point類型的vetor表示,。
  3. OutputArray類型的hierarchy,可選的輸出向量,包含圖像的拓?fù)湫畔?。其作為輪廓?shù)量的表示,包括多個(gè)元素,。每個(gè)輪廓contours[i]有4個(gè)hierarchy元素——hierarchy[i][0]~hierarchy[i][3],分別表示后一個(gè)輪廓,、前一個(gè)輪廓、父輪廓,、內(nèi)嵌輪廓的索引編號,如果沒有對應(yīng)項(xiàng),對應(yīng)值設(shè)為負(fù)數(shù),。
  4. int類型的mode,輪廓檢索模式。RETR_EXTERNAL表示只檢測最外圍輪廓;RETR_LIST表示提取所有輪廓并放置在list中,無等級關(guān)系;RETR_CCOMP表示提取所有輪廓,并將其組織為雙層結(jié)構(gòu);RETR_TREE表示提取所有輪廓,并重新建立網(wǎng)狀的輪廓結(jié)構(gòu),。
  5. int類型的method,輪廓近似方法。CHAIN_APPROX_NONE表示獲取每個(gè)輪廓的每個(gè)像素;CHAIN_APPROX_SIMPLE表示壓縮水平方向,、垂直方向,、對角方向的元素,只保留該方向的終點(diǎn)坐標(biāo);CHAIN_APPROX_TC89_L1和CHAIN_APPROX_TC89——KCOS表示Teh-Chinl鏈逼近算法。
  6. Point類型的offset,每個(gè)輪廓點(diǎn)的可選偏移量,。

? ? ? ?drawContours:

  1. InputArray類型的image,輸入圖像,。
  2. OutputArrayOfArrays類型的contours,檢測到的輪廓結(jié)果存放在此,每個(gè)輪廓存儲為一個(gè)點(diǎn)向量,用point類型的vetor表示。
  3. int類型的contourIdx,輪廓繪制的指示變量,。如果其為負(fù)值,則繪制所有輪廓,。
  4. const Scalar&類型的color,輪廓的顏色。
  5. int類型的thickness,輪廓線條的粗細(xì)度,有默認(rèn)值1,。如果其為負(fù)值,則會繪制在輪廓的內(nèi)部,。可選為FILLED,。
  6. int類型的lineType,線條的類型,默認(rèn)值為8,。可取8(8連通線型),、4,、LINE_AA(抗鋸齒線型)。
  7. InputArray類型的hierarchy,可選的層次結(jié)構(gòu)信息,。
  8. int類型的maxLevel,表示用于繪制輪廓的最大等級,默認(rèn)為INT_MAX,。
  9. Point類型的offset,可選的輪廓偏移參數(shù)。

測試代碼

#include<iostream>
#include<opencv2/opencv.hpp>
#include<opencv2/highgui.hpp>
#include<opencv2/imgproc.hpp>
#include<ctime>
using namespace std;
using namespace cv;
int main(void)
{
// 輸入測試圖片
Mat in = imread("tangsan.jpg", 0);
imshow("original", in);

// 初始化結(jié)果矩陣
Mat out = Mat::zeros(in.size(), in.type());
Mat temp= Mat::zeros(in.size(), in.type());

// 閾值計(jì)算,最大類間方差法
threshold(in, temp, 0, 255, cv::THRESH_OTSU);      
imshow("thresh", temp);

// 尋找輪廓
vector<vector<Point>> contour;
vector<Vec4i> hierarchy;
// RETR_TREE以網(wǎng)狀結(jié)構(gòu)提取所有輪廓,CHAIN_APPROX_NONE獲取輪廓的每個(gè)像素
findContours(temp, contour, hierarchy, RETR_TREE, CHAIN_APPROX_NONE);

// 隨機(jī)選擇一個(gè)顏色,并繪制輪廓
Scalar color( rand() % 255, rand() % 255, rand() % 255);
drawContours(out, contour, -1,color, FILLED, 8, hierarchy);
imshow("result", out);

waitKey(0);
system("pause");
return 0;
}

測試效果

圖1?效果圖

? ? ? ?不難看出,輪廓結(jié)果圖中間少了些東西,這是因?yàn)樘崛≥喞x用的是最外圈提取法,外圈輪廓的內(nèi)嵌輪廓都被清除了~

? ? ? ?如果文章幫助到你了,可以點(diǎn)個(gè)贊讓我知道,我會很快樂~加油!

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多