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

محاسبه موقیعت شکل در تصویر باینری

+1 امتیاز

سلام به همگی. من تصویر grayScale را باینری کردم و به تصویر زیر رسیدم.

 

 

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

 

 

برای انجامش چکار باید انجام بدم.

سوال شده بهمن 22, 1392  بوسیله ی ابید (امتیاز 781)   19 89 106
دوباره تگ گذاری شد بهمن 22, 1392 بوسیله ی BlueBlade

2 پاسخ

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

کاری نداره کلیه کانتورها رو بدست بیارید سپس با تابع contourArea مساحت کلیه کانتورها را بدست آورده و کانتوری که دارای بیشترین مساحت هست را انتخاب کنید. به صورت زیر:

Mat color_img = imread("d:\\test.png",1);
	Mat mask_img;
	cvtColor(color_img,mask_img,CV_BGR2GRAY);


	vector<vector<Point>> contours;
	findContours(mask_img,contours,CV_RETR_EXTERNAL,CV_CHAIN_APPROX_SIMPLE);
	int max_area = 0;
	int max_index = -1;
	for (size_t i=0;i < contours.size();i++){
		int cur_area = contourArea(contours[i]);
		if (cur_area > max_area){
			max_area = cur_area;
			max_index = i;
		}
	}
	Rect max_rect = boundingRect(contours[max_index]);
	cv::rectangle(color_img,max_rect,CV_RGB(0,255,0),2);
	
	imshow("view",color_img);waitKey(0);

 

پاسخ داده شده بهمن 23, 1392 بوسیله ی مصطفی ساتکی (امتیاز 21,998)   24 34 75
انتخاب شد اسفند 28, 1392 بوسیله ی ابید
0 امتیاز

با سلام

 

برای بدست آوردن ناحیه مستطیلی مورد نظر می توانید از مقادیر کمینه و بیشینه طول و عرض پیکسل های غیر صفر استفاده کنید.

 

موفق باشید.

پاسخ داده شده بهمن 22, 1392 بوسیله ی fatemehora (امتیاز 11)   1
...