好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > OpenCV清除小面積連通域的實現方法

OpenCV清除小面積連通域的實現方法

熱門標簽:鶴壁手機自動外呼系統違法嗎 怎么辦理400客服電話 B52系統電梯外呼顯示E7 沈陽防封電銷電話卡 銀川電話機器人電話 企業微信地圖標注 高德地圖標注收入咋樣 地圖標注多個 萊蕪電信外呼系統

場景需求

       使用OpenCV,往往遇到這類場景:需要清除目標圖像中比較小的噪聲區,保留主要區域信息。

       特此分享自己寫的一個簡單的清除小面積連通域函數,邏輯比較簡單,給大家留出了足夠的發展空間,根據自身場景需求進行調整。

       原理可以簡單歸結為:搜索圖像的連通區輪廓->遍歷各個連通區->基于閾值刪除面積較小的連通區

       運行速度方面,我沒單獨測試過這個單元,大家如果試過之后太慢可以評論告訴我哦~

       反正平常我工作跑那種2000*2000的圖像,這個函數的耗時幾乎忽略不計。。。

C++實現代碼

/**
* @brief  Clear_MicroConnected_Areas         清除微小面積連通區函數
* @param  src                                輸入圖像矩陣
* @param  dst                                輸出結果
* @return min_area                           設定的最小面積清除閾值
*/
void Clear_MicroConnected_Areas(cv::Mat src, cv::Mat dst, double min_area)
{
	// 備份復制
	dst = src.clone();
	std::vectorstd::vectorcv::Point> > contours;  // 創建輪廓容器
	std::vectorcv::Vec4i> 	hierarchy;  
 
	// 尋找輪廓的函數
	// 第四個參數CV_RETR_EXTERNAL,表示尋找最外圍輪廓
	// 第五個參數CV_CHAIN_APPROX_NONE,表示保存物體邊界上所有連續的輪廓點到contours向量內
	cv::findContours(src, contours, hierarchy, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_NONE, cv::Point());
 
	if (!contours.empty()  !hierarchy.empty()) 
	{
		std::vectorstd::vectorcv::Point> >::const_iterator itc = contours.begin();
		// 遍歷所有輪廓
		while (itc != contours.end()) 
		{
			// 定位當前輪廓所在位置
			cv::Rect rect = cv::boundingRect(cv::Mat(*itc));
			// contourArea函數計算連通區面積
			double area = contourArea(*itc);
			// 若面積小于設置的閾值
			if (area  min_area) 
			{
				// 遍歷輪廓所在位置所有像素點
				for (int i = rect.y; i  rect.y + rect.height; i++) 
				{
					uchar *output_data = dst.ptruchar>(i);
					for (int j = rect.x; j  rect.x + rect.width; j++) 
					{
						// 將連通區的值置0
						if (output_data[j] == 255) 
						{
							output_data[j] = 0;
						}
					}
				}
			}
			itc++;
		}
	}
}

測試代碼

#includeiostream>
#includeopencv2/opencv.hpp>
 
using namespace std;
using namespace cv;
 
void Clear_MicroConnected_Areas(cv::Mat src, cv::Mat dst, double min_area);
 
int main(void)
{
	Mat A = Mat::zeros(500, 500, CV_8UC1);
	circle(A, Point2i(100, 100), 50, 255, -1);
	circle(A, Point2i(300, 400), 15, 255, -1);
	Mat B;
	Clear_MicroConnected_Areas(A, B, 1000);
 
	imshow("before:A", A);
	imshow("after:B", B);
	waitKey(0);
 
	system("pause");
	return 0;
}
 
void Clear_MicroConnected_Areas(cv::Mat src, cv::Mat dst, double min_area)
{
	// 備份復制
	dst = src.clone();
	std::vectorstd::vectorcv::Point> > contours;  // 創建輪廓容器
	std::vectorcv::Vec4i> 	hierarchy;  
 
	// 尋找輪廓的函數
	// 第四個參數CV_RETR_EXTERNAL,表示尋找最外圍輪廓
	// 第五個參數CV_CHAIN_APPROX_NONE,表示保存物體邊界上所有連續的輪廓點到contours向量內
	cv::findContours(src, contours, hierarchy, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_NONE, cv::Point());
 
	if (!contours.empty()  !hierarchy.empty()) 
	{
		std::vectorstd::vectorcv::Point> >::const_iterator itc = contours.begin();
		// 遍歷所有輪廓
		while (itc != contours.end()) 
		{
			// 定位當前輪廓所在位置
			cv::Rect rect = cv::boundingRect(cv::Mat(*itc));
			// contourArea函數計算連通區面積
			double area = contourArea(*itc);
			// 若面積小于設置的閾值
			if (area  min_area) 
			{
				// 遍歷輪廓所在位置所有像素點
				for (int i = rect.y; i  rect.y + rect.height; i++) 
				{
					uchar *output_data = dst.ptruchar>(i);
					for (int j = rect.x; j  rect.x + rect.width; j++) 
					{
						// 將連通區的值置0
						if (output_data[j] == 255) 
						{
							output_data[j] = 0;
						}
					}
				}
			}
			itc++;
		}
	}
}

測試效果

 

圖1 處理前后圖

到此這篇關于OpenCV-清除小面積連通域的文章就介紹到這了,更多相關OpenCV-清除小面積連通域內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • OpenCV實現圖像連通域
  • 使用OpenCV去除面積較小的連通域
  • 使用OpenCV獲取圖片連通域數量,并用不同顏色標記函

標簽:三亞 銀川 葫蘆島 呼倫貝爾 湘西 烏魯木齊 呼倫貝爾 安慶

巨人網絡通訊聲明:本文標題《OpenCV清除小面積連通域的實現方法》,本文關鍵詞  OpenCV,清除,小,面積,連通,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《OpenCV清除小面積連通域的實現方法》相關的同類信息!
  • 本頁收集關于OpenCV清除小面積連通域的實現方法的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 免费扒开胸罩吃奶视频| 玖玖资源站365每天更新| 男生的机机桶女生的机机| 黄色一级性生活| 男男高干H灌满静液双龙| 国产一级视频在线播放| 黄版鲁鲁社| 夜夜爽夜夜爱| 哒哒哒高清在线观看www下载| 国产福利一区视频| 国产五月色婷婷六月丁香视频| 黑丝足交| 国产精品18久久久久久欧美网址| 漫画性姿势108式大全| 国产-级嫒片A片免费无码-百度 | 亂伦小说合集500篇视频| 性关系视频免费网站在线观看| 坐在学长棒棒上做作业| 美女扒开尿口的动态图| 日韩精品视频免费网址| 新婚被多人灌满精子H| 成人啪啪爽到潮喷喷水水搭配 | 极品粉嫩国产18尤物在线麻豆| 无人区dvd高清完整版| 鞠婧祎ai智能人脸替换造梦| 《色戒》BD高清完整版| 久久久久久久久久国产| zzzwww免费看片免费软件| 亚洲女同志videos| 云鸾萧廷宴小说| 女人超爽的自慰方法| 女攻cao烂美人| 95久久久久精品无码一区二区| 精品毛片免费看| 月经没走干净做了一次要紧吗| 欧美学生小嫩嫩xB| 一级特级aaaa毛片免费观看| 车上乱肉合集乱500小说小说| 小受被狂c躁到高潮失禁作文| 欧美porno| 无码国内精品久久人妻中文成人|