حذف منحنی های باز در تصویر - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

وبـــلاگ هــفت خــط کــد


آموزش های برنامه نویسی
۴۷ نفر آنلاین
۱ عضو و ۴۶ مهمان در سایت حاضرند

حذف منحنی های باز در تصویر

+1 امتیاز
109 بازدید

بعد از عملیات پیش پردازش به تصویر باینری زیر رسیدم.

حالا قصد دارم منحنی هایی که باز هستند را حذف کنم منحنی چپ بالا و راست پایین منحنی های باز هستند.

سوال شده بهمن 10, 1392  بوسیله ی crypto_code (امتیاز 63)   1 11

1 پاسخ

+5 امتیاز
 
بهترین پاسخ

در ابتدا برای پیدا کردن منحنی های باز در شکل بالا کانتور آنها نه والد دارند و نه فرزند بهمین خاطر وقتی findContour می کنید از heirarchy هم استفاده کنید و کانتورهایی که والد و فرزند را ندارند را از دیگر کانتورها جدا نمایید. به صورت زیر :

	Mat img = imread("d:/1.png",0);
	vector<vector<Point>> contours;
	vector<Vec4i> heirarchy;
	findContours(img.clone(),contours,heirarchy,CV_RETR_TREE,CV_CHAIN_APPROX_SIMPLE);
	Mat color_img;
	cvtColor(img,color_img,CV_GRAY2BGR);
	for (size_t i=0; i < contours.size();i++)
		if ( heirarchy[i][2] ==-1 && heirarchy[i][3] ==-1)
		  drawContours(color_img,contours,i,CV_RGB(0,255,0),1);
	imshow("view",color_img);
	waitKey(0);

 

 

 

 

 

 

پاسخ داده شده بهمن 25, 1392 بوسیله ی مصطفی ساتکی (امتیاز 16,378)   16 24 66
...