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

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


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

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

0 امتیاز
135 بازدید

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

 

 

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

 

 

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

سوال شده بهمن 22, 1392  بوسیله ی ابید (امتیاز 263)   1 4 29

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 بوسیله ی مصطفی ساتکی (امتیاز 16,732)   17 25 66
0 امتیاز

با سلام

 

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

 

موفق باشید.

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