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

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


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

پیمایش کل مسیر بیضی روی تصویر

0 امتیاز
سلام. اگر یک بیضی با ابعاد مشخص و زاویه مشخص داشته باشم آیا می تونم کل مسیری که این بیضی ازش عبور می کنه را پیمایش کنم ؟ راه حلش چطوره؟
سوال شده بهمن 9, 1392  بوسیله ی ماهان (امتیاز 58)   4 10 14
ویرایش شده بهمن 9, 1392 بوسیله ی BlueBlade

2 پاسخ

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

راه حل بهینه :

	cv::Mat img=cv::imread("F:\\test.jpg");
		vector points;
        ellipse2Poly(cv::Point(200,100),cv::Size(150,50),30,0,270,1,points);

		for(int i=0;i<points.size();i++)
		{
			img.at<cv::Vec3b>(points[i]).val[0] = 0;
			img.at<cv::Vec3b>(points[i]).val[1] = 0;
			img.at<cv::Vec3b>(points[i]).val[2] = 0;
				

		}
		cv::imshow("image",img);
		cv::waitKey();
	

 

پاسخ داده شده بهمن 9, 1392 بوسیله ی مصطفی ساتکی (امتیاز 21,998)   24 34 75
انتخاب شد بهمن 10, 1392 بوسیله ی BlueBlade
+2 امتیاز

میشه اول ellipse رو کشید بعد map کرد روی تصویر اصلی مثلا :

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
 
int main()
{
    cv::Mat img=cv::imread("F:\\test.jpg");
 
    cv::Mat ellipse_image(img.rows,img.cols,CV_8UC1,cv::Scalar(0));
 
    cv::Mat result(img.rows,img.cols,CV_8UC3,cv::Scalar(0,0,0));
 
    cv::ellipse(ellipse_image,cv::Point(200,100),cv::Size(150,50),30,0,270,cv::Scalar(255),10);
 
    for(int i=0;i<img.rows;i++)
    {
        uchar* data=ellipse_image.ptr<uchar>(i);
        for(int j=0;j<img.cols;j++)
        {
            if(data[j]==255)
            {
                result.at<cv::Vec3b>(i,j)=img.at<cv::Vec3b>(i,j);
            }
 
        }
 
    }
      cv::imshow("ellipse",ellipse_image);
      cv::imshow("image",img);
      cv::imshow("result",result);
      cv::waitKey();
}

خروجی :

پاسخ داده شده بهمن 9, 1392 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
امید به نظرت روشی که گفتی بهینه ست؟
...