最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

OpenCV輪廓檢測之boundingRect繪制矩形邊框

 更新時間:2021年12月15日 14:39:44   作者:翟天保Steven  
在進行文本檢測時,我們常常會用矩形邊框將檢測到的內容框除。這篇文章主要為大家介紹的是OpenCV中能實現(xiàn)這一效果的函數(shù):boundingRect,感興趣的同學可以學習一下

函數(shù)原型

cv::Rect boundingRect( InputArray array );

參數(shù)說明

輸入:InputArray類型的array,輸入灰度圖像或二維點集。

輸出:Rect類型的矩形信息,包括矩形尺寸和位置。

測試代碼

#include <iostream>
#include <time.h>
#include <opencv2/opencv.hpp>
 
using namespace std;
using namespace cv;
 
int main()
{
	cv::Mat src = imread("test.png",0);
	cv::Mat result = src.clone();
	cv::Mat th1;
	// 最大類間差法,也稱大津算法
	threshold(result, th1, 0, 255, THRESH_OTSU);
	// 反相
	th1 = 255 - th1;
	// 確定連通區(qū)輪廓
	std::vector<std::vector<cv::Point> > contours;  // 創(chuàng)建輪廓容器
	std::vector<cv::Vec4i> 	hierarchy;
	cv::findContours(th1, contours, hierarchy, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_NONE, cv::Point());
	// 遍歷輪廓顯示矩形框
	for (int i = 0; i < contours.size(); ++i)
	{
		cv::Rect rect = cv::boundingRect(cv::Mat(contours[i]));
		cv::rectangle(result, rect, Scalar(255), 1);
	}
 
	imshow("original", src);
	imshow("thresh", th1);
	imshow("result", result);
	waitKey(0);
 
	return 0;
}
 

測試效果

?

補充

這個函數(shù)得到的矩形框都是方正的,還有一個函數(shù)minAreaRect也可以得到最小包圍矩形框,那個是帶傾斜角度的。

函數(shù)原型

cv::RotatedRect minAreaRect( InputArray points );

參數(shù)說明

輸入:InputArray類型的points,輸入灰度圖像或二維點集。

輸出:RotatedRect類型的旋轉矩形信息,即矩形四角點位置。

測試代碼

#include <iostream>
#include <time.h>
#include <opencv2/opencv.hpp>
 
using namespace std;
using namespace cv;
 
int main()
{
	cv::Mat src = imread("test.png",0);
	cv::Mat result = src.clone();
	cv::Mat th1;
	// 最大類間差法,也稱大津算法
	threshold(result, th1, 0, 255, THRESH_OTSU);
	// 反相
	th1 = 255 - th1;
	// 確定連通區(qū)輪廓
	std::vector<std::vector<cv::Point> > contours;  // 創(chuàng)建輪廓容器
	std::vector<cv::Vec4i> 	hierarchy;
	cv::findContours(th1, contours, hierarchy, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_NONE, cv::Point());
	// 遍歷輪廓顯示矩形框
	for (int i = 0; i < contours.size(); ++i)
	{
		cv::RotatedRect rotatedrect = cv::minAreaRect(cv::Mat(contours[i]));
		// 存儲旋轉矩形的四個點
		cv::Point2f ps[4];
		rotatedrect.points(ps);
		std::vector<std::vector<cv::Point>> tmpContours;    // 創(chuàng)建一個InputArrayOfArrays 類型的點集
		std::vector<cv::Point> contour;
		for (int i = 0; i != 4; ++i) {
			contour.emplace_back(cv::Point2i(ps[i]));
		}
		// 插入到輪廓容器中
		tmpContours.insert(tmpContours.end(), contour);
		// 繪制輪廓,也就是繪制旋轉矩形
		drawContours(result, tmpContours, -1, Scalar(0), 1, 16);  // 填充mask
	}
 
	imshow("original", src);
	imshow("thresh", th1);
	imshow("result", result);
	waitKey(0);
 
	return 0;
}
 

測試效果:

到此這篇關于OpenCV輪廓檢測之boundingRect繪制矩形邊框的文章就介紹到這了,更多相關OpenCV boundingRect繪制矩形邊框內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C++?基本數(shù)據類型中int、long等整數(shù)類型取值范圍及原理分析

    C++?基本數(shù)據類型中int、long等整數(shù)類型取值范圍及原理分析

    這篇文章主要介紹了C++?基本數(shù)據類型中int、long等整數(shù)類型取值范圍及原理分析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 一文掌握C++?中使用變量從定義到實踐

    一文掌握C++?中使用變量從定義到實踐

    變量是用于存儲數(shù)據值的容器,在?C++?中,有不同類型的變量(使用不同的關鍵字定義),這篇文章給大家介紹C++?中使用變量從定義到實踐記錄,感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • 詳解c++實現(xiàn)信號槽

    詳解c++實現(xiàn)信號槽

    這篇文章主要為大家介紹了c++實現(xiàn)信號槽,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • VC++ 字符串String MD5計算小工具 VS2008工程

    VC++ 字符串String MD5計算小工具 VS2008工程

    基于字符串加密的MD5算法,VS2008 VC++,多字節(jié)編譯工程。主要代碼如下,實現(xiàn)了ANSI字符串加密與Unicode字符串加密,需要的朋友可以參考下
    2017-07-07
  • C++實現(xiàn)考勤管理系統(tǒng)

    C++實現(xiàn)考勤管理系統(tǒng)

    這篇文章主要介紹了C++實現(xiàn)考勤管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 詳解C++二叉搜索樹的原理及實現(xiàn)

    詳解C++二叉搜索樹的原理及實現(xiàn)

    二叉搜索樹又稱二叉排序樹,二叉搜索樹是一種二叉樹,其中每個節(jié)點的值大于其左子樹中的任何節(jié)點,并且小于其右子樹中的任何節(jié)點,本文小編就給大家講講C++二叉搜索樹的操作及實現(xiàn),感興趣的同學跟著小編一起來看看吧
    2023-08-08
  • C++多態(tài)實現(xiàn)方式詳情

    C++多態(tài)實現(xiàn)方式詳情

    這篇文章主要介紹了C++多態(tài)實現(xiàn)方式詳情,多態(tài)是一種面向對象的設計思路,本身和C++不是強綁定的,其他語言當中一樣有多態(tài),只不過實現(xiàn)的方式可能有所不同。下面來一起了解更多詳細內容吧
    2022-01-01
  • C語言操作符超詳細講解下篇

    C語言操作符超詳細講解下篇

    C?語言提供了豐富的操作符,有:算術操作符,移位操作符,位操作符,賦值操作符,單目操作符,關系操作符,邏輯操作符,條件操作符等。本篇為第二篇,讓我們通讀本篇來詳細了解吧
    2022-04-04
  • C++類中如何使用定義的類型別名

    C++類中如何使用定義的類型別名

    這篇文章主要介紹了C++類中如何使用定義的類型別名,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • QT使用SQLite數(shù)據庫超詳細教程(增刪改查、對大量數(shù)據快速存儲和更新)

    QT使用SQLite數(shù)據庫超詳細教程(增刪改查、對大量數(shù)據快速存儲和更新)

    這篇文章主要給大家介紹了關于QT使用SQLite數(shù)據庫的相關資料,其中包括增刪改查以及對大量數(shù)據快速存儲和更新,SQLite是一種嵌入式關系型數(shù)據庫管理系統(tǒng),它是一個軟件庫,提供了一個自包含、無服務器、零配置的、事務性的SQL數(shù)據庫引擎,需要的朋友可以參考下
    2024-01-01

最新評論

前郭尔| 张家口市| 和林格尔县| 白山市| 新巴尔虎左旗| 马尔康县| 怀安县| 桂阳县| 五家渠市| 裕民县| 昌平区| 柘荣县| 桂东县| 泰和县| 怀宁县| 会东县| 车致| 容城县| 娄烦县| 凌云县| 泸水县| 工布江达县| 集安市| 永川市| 弋阳县| 右玉县| 中牟县| 汉沽区| 惠安县| 思南县| 利辛县| 仁怀市| 惠安县| 广宁县| 福海县| 香河县| 扎赉特旗| 界首市| 宜良县| 灵武市| 阿荣旗|