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

کشیدن یک مستطیل در ماتریس

0 امتیاز
سلام

یه تمرین توی کتاب گفته بود که یه ماتریس 100 در 100 درست کنیم و و از تابع cvPtr2D برای اشراه به کانال وسط (سبز)اسفتاده کنیم و توی ماتریس یه مستطیل سبز بکشیم

میخواستم بدونم که چجوری باید توی یه ماتریس cvMat یه مستطیل بکشم و نشون مبدم و اینکه چجوری به کانال وسطش دسترسی داشته باشم.

با تشکر از دوستان
سوال شده بهمن 8, 1392  بوسیله ی mohsen (امتیاز 69)   2 6 13
دوباره تگ گذاری شد بهمن 22, 1392 بوسیله ی BlueBlade
در پست قبلی شما هم ذکر کردم که دیگه از نسخه ansi c استفاده نکنید.

2 پاسخ

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

سلام می تونی این جوری کار کنی :

#include <vector>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>

int main(int argc, char *argv[])
{
    const int SIZE=100;
    
    //empty image
    cv::Mat image(SIZE,SIZE,CV_8UC3,cv::Scalar(0));
    
    {
        //split channels
        std::vector<cv::Mat> channels(3);
        cv::split(image,channels);
        
        //add rect to g channel
        cv::Rect roi = cv::Rect(SIZE/3, SIZE/3, SIZE/3, SIZE/3);
        cv::Mat green_roi = channels[1](roi);
        green_roi.setTo(255);
        
        //merge channels
        cv::merge(channels,image);
    }
    
    //show image
    cv::imshow("TEST",image);
    
    cv::waitKey();
}

 

پاسخ داده شده بهمن 8, 1392 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
انتخاب شد بهمن 8, 1392 بوسیله ی mohsen
+1 امتیاز
برای کشیدن یک مستطیل سبز رنگ بر روی تصویر نیاز ندارید که به کانال green دسترسی داشته باشید به راحتی با setTo و rectangle می تونید یک مستطیل سبز رنگ رسم کنید .این کدی هم که امید قرار داده در جایی که مستطیل واقع شده یک لایه سیز رنگ رسم می کنه.
پاسخ داده شده بهمن 8, 1392 بوسیله ی مصطفی ساتکی (امتیاز 21,998)   24 34 75
...