校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁(yè) > 知識(shí)庫(kù) > OpenCV繪制圓端矩形的示例代碼

OpenCV繪制圓端矩形的示例代碼

熱門標(biāo)簽:湛江智能外呼系統(tǒng)廠家 地圖標(biāo)注審核表 ai電話機(jī)器人哪里好 百度地圖標(biāo)注沒有了 宿遷星美防封電銷卡 外呼并發(fā)線路 西藏房產(chǎn)智能外呼系統(tǒng)要多少錢 ai電銷機(jī)器人源碼 長(zhǎng)沙高頻外呼系統(tǒng)原理是什么

本文主要介紹了OpenCV繪制圓端矩形的示例代碼,分享給大家,具體如下:

功能函數(shù)

// 繪制圓端矩形(藥丸狀,pill)
void DrawPill(cv::Mat mask, const cv::RotatedRect rotatedrect, const cv::Scalar color, int thickness, int lineType)
{
	cv::Mat canvas = cv::Mat::zeros(mask.size(), CV_8UC1);
	// 確定短邊,短邊繪制圓形
	cv::RotatedRect rect = rotatedrect;
	float r = rect.size.height / 2.0f;
	if (rect.size.width > rect.size.height) {
		rect.size.width -= rect.size.height;
	}
	else {
		rect.size.height -= rect.size.width;
		r = rect.size.width / 2.0f;
	}
	cv::Point2f ps[4];
	rect.points(ps);
 
	// 繪制邊緣
	std::vectorstd::vectorcv::Point>> tmpContours;
	std::vectorcv::Point> contours;
	for (int i = 0; i != 4; ++i) {
		contours.emplace_back(cv::Point2i(ps[i]));
	}
	tmpContours.insert(tmpContours.end(), contours);
	drawContours(canvas, tmpContours, 0, cv::Scalar(255),5, lineType);  // 填充mask
 
	// 計(jì)算常長(zhǎng)短軸
	float a = rotatedrect.size.width;
	float b = rotatedrect.size.height;
 
	int point01_x = (int)((ps[0].x + ps[1].x) / 2.0f);
	int point01_y = (int)((ps[0].y + ps[1].y) / 2.0f);
	int point03_x = (int)((ps[0].x + ps[3].x) / 2.0f);
	int point03_y = (int)((ps[0].y + ps[3].y) / 2.0f);
	int point12_x = (int)((ps[1].x + ps[2].x) / 2.0f);
	int point12_y = (int)((ps[1].y + ps[2].y) / 2.0f);
	int point23_x = (int)((ps[2].x + ps[3].x) / 2.0f);
	int point23_y = (int)((ps[2].y + ps[3].y) / 2.0f);
 
	cv::Point c0 = a  b ? cv::Point(point12_x, point12_y) : cv::Point(point23_x, point23_y);
	cv::Point c1 = a  b ? cv::Point(point03_x, point03_y) : cv::Point(point01_x, point01_y);
 
	// 長(zhǎng)軸兩端以填充的方式畫圓,直徑等于短軸
	cv::circle(canvas, c0, (int)r, cv::Scalar(255), 5, lineType);
	cv::circle(canvas, c1, (int)r, cv::Scalar(255), 5, lineType);
 
	// 繪制外圍輪廓,如果不這樣操作,會(huì)得到一個(gè)矩形加兩個(gè)圓形,丑。。。
	std::vectorstd::vectorcv::Point>> EXcontours;
	cv::findContours(canvas,EXcontours,cv::RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);
	drawContours(mask, EXcontours, 0, color, thickness,lineType);  // 填充mask
}

測(cè)試代碼

#include iostream>
#include opencv2/opencv.hpp>
 
using namespace std;
using namespace cv;
 
void DrawPill(cv::Mat mask, const cv::RotatedRect rotatedrect, const cv::Scalar color, int thickness, int lineType);
 
int main()
{
	cv::Mat src = imread("test.jpg");
	cv::Mat result = src.clone();
	cv::RotatedRect rorect(cv::Point(src.cols / 2, src.rows / 2), cv::Size(1000, 800), 50);
	DrawPill(result, rorect, cv::Scalar(0, 255, 255),8,16);
	imshow("original", src);
	imshow("result", result);
	waitKey(0);
	return 0;
}
 
// 繪制圓端矩形(藥丸狀,pill)
void DrawPill(cv::Mat mask, const cv::RotatedRect rotatedrect, const cv::Scalar color, int thickness, int lineType)
{
	cv::Mat canvas = cv::Mat::zeros(mask.size(), CV_8UC1);
	// 確定短邊,短邊繪制圓形
	cv::RotatedRect rect = rotatedrect;
	float r = rect.size.height / 2.0f;
	if (rect.size.width > rect.size.height) {
		rect.size.width -= rect.size.height;
	}
	else {
		rect.size.height -= rect.size.width;
		r = rect.size.width / 2.0f;
	}
	cv::Point2f ps[4];
	rect.points(ps);
 
	// 繪制邊緣
	std::vectorstd::vectorcv::Point>> tmpContours;
	std::vectorcv::Point> contours;
	for (int i = 0; i != 4; ++i) {
		contours.emplace_back(cv::Point2i(ps[i]));
	}
	tmpContours.insert(tmpContours.end(), contours);
	drawContours(canvas, tmpContours, 0, cv::Scalar(255),5, lineType);  // 填充mask
 
	// 計(jì)算常長(zhǎng)短軸
	float a = rotatedrect.size.width;
	float b = rotatedrect.size.height;
 
	int point01_x = (int)((ps[0].x + ps[1].x) / 2.0f);
	int point01_y = (int)((ps[0].y + ps[1].y) / 2.0f);
	int point03_x = (int)((ps[0].x + ps[3].x) / 2.0f);
	int point03_y = (int)((ps[0].y + ps[3].y) / 2.0f);
	int point12_x = (int)((ps[1].x + ps[2].x) / 2.0f);
	int point12_y = (int)((ps[1].y + ps[2].y) / 2.0f);
	int point23_x = (int)((ps[2].x + ps[3].x) / 2.0f);
	int point23_y = (int)((ps[2].y + ps[3].y) / 2.0f);
 
	cv::Point c0 = a  b ? cv::Point(point12_x, point12_y) : cv::Point(point23_x, point23_y);
	cv::Point c1 = a  b ? cv::Point(point03_x, point03_y) : cv::Point(point01_x, point01_y);
 
	// 長(zhǎng)軸兩端以填充的方式畫圓,直徑等于短軸
	cv::circle(canvas, c0, (int)r, cv::Scalar(255), 5, lineType);
	cv::circle(canvas, c1, (int)r, cv::Scalar(255), 5, lineType);
 
	// 繪制外圍輪廓,如果不這樣操作,會(huì)得到一個(gè)矩形加兩個(gè)圓形,丑。。。
	std::vectorstd::vectorcv::Point>> EXcontours;
	cv::findContours(canvas,EXcontours,cv::RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);
	drawContours(mask, EXcontours, 0, color, thickness,lineType);  // 填充mask
}

測(cè)試效果

 

圖1 原圖

 

圖2 繪制圓端矩形

繪制圓端矩形其實(shí)就是繪制了一個(gè)旋轉(zhuǎn)矩形,然后分析哪個(gè)軸更長(zhǎng),就在哪個(gè)軸上的兩端畫圓,再取外圍輪廓,大功告成,通俗來講就畫了一個(gè)矩形兩個(gè)圓,如圖3所示。

 

圖3 繪制邏輯

不過注意,這個(gè)圖形最好不要超過圖像邊界,因?yàn)槌^后再分析外圍輪廓,它認(rèn)為的外圍就到了內(nèi)部,如圖4所示。

 

圖4 外圍線

然后,你就會(huì)得到一個(gè)奇葩圖形,如圖5所示。

圖5 示意圖

到此這篇關(guān)于OpenCV繪制圓端矩形的示例代碼的文章就介紹到這了,更多相關(guān)OpenCV 圓端矩形內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • python opencv minAreaRect 生成最小外接矩形的方法
  • 詳解利用OpenCV提取圖像中的矩形區(qū)域(PPT屏幕等)
  • python opencv實(shí)現(xiàn)圖片旋轉(zhuǎn)矩形分割
  • python opencv實(shí)現(xiàn)旋轉(zhuǎn)矩形框裁減功能
  • OpenCV 圓與矩形識(shí)別的方法
  • opencv提取外部輪廓并在外部加矩形框
  • python3+openCV 獲取圖片中文本區(qū)域的最小外接矩形實(shí)例
  • Opencv繪制最小外接矩形、最小外接圓
  • openCV提取圖像中的矩形區(qū)域

標(biāo)簽:普洱 海南 南平 林芝 漯河 盤錦 大同 寧夏

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《OpenCV繪制圓端矩形的示例代碼》,本文關(guān)鍵詞  OpenCV,繪制,圓端,矩,形的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《OpenCV繪制圓端矩形的示例代碼》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于OpenCV繪制圓端矩形的示例代碼的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    久久精品国产精品亚洲红杏| 欧美一区二区三区性视频| 欧美性一二三区| 精品成人佐山爱一区二区| 亚洲欧美另类久久久精品2019| 青青草国产精品亚洲专区无| av亚洲产国偷v产偷v自拍| 91精品国产91久久久久久一区二区 | jiyouzz国产精品久久| 337p亚洲精品色噜噜狠狠| 国产精品超碰97尤物18| 免费成人结看片| 欧美体内she精视频| 欧美国产日韩一二三区| 蜜桃精品视频在线| 91久久精品一区二区三| 亚洲国产精品ⅴa在线观看| 日韩av在线播放中文字幕| 不卡的看片网站| 国产视频一区在线观看| 亚洲美女屁股眼交3| 欧美色图片你懂的| 亚洲色图清纯唯美| 9i在线看片成人免费| 久久久久国产成人精品亚洲午夜| 日本91福利区| 911精品产国品一二三产区| 亚洲精品久久7777| av一二三不卡影片| 国产精品视频九色porn| 国产精品99久久不卡二区| 日韩精品综合一本久道在线视频| 亚洲综合一区二区三区| 国产91清纯白嫩初高中在线观看| 69堂国产成人免费视频| 亚洲综合清纯丝袜自拍| 色综合视频在线观看| 欧美二区在线观看| 日本视频中文字幕一区二区三区| 国产精品一区免费在线观看| 2020国产精品久久精品美国| 免费在线成人网| 欧美成人a∨高清免费观看| 中文字幕永久在线不卡| 精品国产污网站| 日本在线观看不卡视频| 亚洲福利一二三区| 日本韩国欧美一区| 亚洲午夜国产一区99re久久| 91麻豆福利精品推荐| 国产精品欧美一区二区三区| 国产aⅴ综合色| 国产女主播在线一区二区| 国产一区二区三区黄视频| 欧美xxx久久| 久99久精品视频免费观看| 91精品国产91热久久久做人人| 日韩黄色免费电影| 日韩欧美国产麻豆| 天天爽夜夜爽夜夜爽精品视频| 色www精品视频在线观看| 亚洲精品乱码久久久久久久久| 色婷婷亚洲精品| 亚洲图片一区二区| 欧美久久久久免费| 日本怡春院一区二区| 日韩欧美一区电影| 国产精品资源网站| 亚洲精品视频自拍| 欧美三级中文字幕| 久久精品国产亚洲高清剧情介绍 | 欧美在线你懂得| 亚洲国产视频a| 日韩欧美一区二区视频| 精品亚洲成a人| 欧美激情自拍偷拍| 欧美亚洲自拍偷拍| 日本视频免费一区| 国产精品久久久久影院| 欧美伊人久久大香线蕉综合69| 全国精品久久少妇| 国产精品久久三| 欧美一区二区国产| 日本美女一区二区三区| 亚洲丝袜精品丝袜在线| 91蜜桃免费观看视频| 亚洲国产精品麻豆| 久久综合成人精品亚洲另类欧美| 丁香六月久久综合狠狠色| 日韩码欧中文字| 欧美tk—视频vk| 色偷偷88欧美精品久久久| 久久精品国产免费| 亚洲欧美在线另类| 欧美狂野另类xxxxoooo| 成人91在线观看| 婷婷国产在线综合| 亚洲人成亚洲人成在线观看图片 | 一区二区在线观看免费| 欧美一区午夜精品| 成人黄色电影在线| 国产精品一区二区男女羞羞无遮挡| 亚洲美女视频一区| 欧美国产欧美综合| 欧美情侣在线播放| 一本色道久久加勒比精品| 狠狠色狠狠色综合| 亚洲国产wwwccc36天堂| 国内外成人在线视频| 日精品一区二区三区| 亚洲国产精华液网站w| 久久久精品综合| 欧美日韩免费观看一区二区三区 | 另类欧美日韩国产在线| 色综合久久久久综合99| 蜜臀精品一区二区三区在线观看| 亚洲欧美另类在线| 国产精品久久久久久久久果冻传媒 | 欧美大黄免费观看| 欧美三电影在线| 欧美亚洲国产怡红院影院| 国产不卡视频在线播放| 日本中文字幕一区二区视频 | 麻豆成人久久精品二区三区红 | 欧美一区二区三区系列电影| www.欧美.com| 福利一区二区在线观看| 韩国毛片一区二区三区| 麻豆国产精品777777在线| 日本vs亚洲vs韩国一区三区 | 欧美视频一区二区| 在线观看日产精品| 91豆麻精品91久久久久久| 一本大道综合伊人精品热热| 99九九99九九九视频精品| 成年人午夜久久久| www.视频一区| www.欧美.com| 91老师国产黑色丝袜在线| 在线视频中文字幕一区二区| 在线免费观看一区| 欧美视频一区在线观看| 欧美精品一二三区| 日韩精品在线一区| 久久久高清一区二区三区| 久久综合久久综合九色| 亚洲国产精品99久久久久久久久| 日韩毛片在线免费观看| 一区二区三区在线观看国产| 亚洲一二三四区| 亚洲影院理伦片| 精品一区二区久久| 高清不卡在线观看| 色中色一区二区| 777欧美精品| 国产欧美日韩中文久久| 日韩一区在线播放| 亚洲一区二区三区四区不卡| 日韩激情一区二区| 国产在线观看免费一区| 日本精品裸体写真集在线观看| 99久久免费视频.com| 91麻豆自制传媒国产之光| 在线成人av网站| 欧美激情一区二区三区蜜桃视频 | 美女脱光内衣内裤视频久久影院| 久久超级碰视频| 成人动漫av在线| 日韩欧美国产精品一区| 亚洲人成网站色在线观看| 五月天激情综合网| 国产成人在线视频播放| 欧美主播一区二区三区| 91精品国产综合久久婷婷香蕉 | 欧美激情中文不卡| 午夜欧美大尺度福利影院在线看| 国产美女视频91| 欧美综合一区二区| 久久精品日韩一区二区三区| 一区二区视频在线看| 狠狠色丁香久久婷婷综| 色综合久久久网| 久久伊人中文字幕| 亚洲超碰精品一区二区| 国产69精品久久久久777| 日本道精品一区二区三区| 欧美高清hd18日本| 中文字幕一区二区不卡 | 99综合电影在线视频| 欧美日韩成人综合天天影院 | 国产精品69毛片高清亚洲| 欧美色偷偷大香| 亚洲国产精品v| 成人国产一区二区三区精品| 日韩久久久精品| 午夜欧美大尺度福利影院在线看 | 日韩欧美精品在线视频| 久久看人人爽人人| 蜜桃视频一区二区| 欧美区在线观看|