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

کپی تصویر به صورت چند ضلعی و غیر مستطیلی

+3 امتیاز
سلام به دوستان. همیشه برای کپی کردن نواحی از ناحیه های مستطیلی جهت کپی کردن قسمتی از تصویر استفاده میشه آیا راهی وجود داره که بتونیم بوسیله آن نواحی چند ضلعی را از تصویر در تصویر دیگر کپی کنیم . ممنون میشم راه حلی بفرماید.
سوال شده اسفند 12, 1392  بوسیله ی nader_kh (امتیاز 20)   2 3

1 پاسخ

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

بله. ابتدا ناحیه چند ضلعی مورد نظر را در یک تصویر ماسک رسم کنید به طور مثال با تابع drawContour و بعد از آن از تابع copyTo جهت کپی کردن بخشی از تصویر استفاده نمایید تابع copyTo برای کپی کردن داده ها از تصویر به تصویر دیگر در صورت نیاز پارامتر ماسک هم دریافت می کند.

در زیر هم مثالی برای شما قرار دادم.

  Mat org = imread("d:/hadi2.jpg",1);	
	Mat dst (org.size(),CV_8UC3,Scalar::all(0));
    Mat mask(org.size(),CV_8UC1,Scalar::all(0));

	vector<Point> points;
	points.push_back(Point(100,100));
	points.push_back(Point(200,100));
	points.push_back(Point(250,150));
	points.push_back(Point(200,200));
	points.push_back(Point(150,250));
	points.push_back(Point(100,200));

	vector<vector<Point>> contours;
	contours.push_back(points);

	drawContours(mask,contours,-1,Scalar::all(255),-1);
	org.copyTo(dst,mask);
	imshow("view",dst);
	waitKey(0);

 

پاسخ داده شده اسفند 13, 1392 بوسیله ی haniye sarbazi (امتیاز 983)   2 6 15
انتخاب شد اسفند 16, 1392 بوسیله ی مصطفی ساتکی
...