m0_46059076 2019-12-20 12:09 采纳率: 0%
浏览 151

求一个关于openCV的作业答案,有报酬。

1.利用opencv分别生成3507*2480的蓝(B170,G91,R4)、绿(B126,G162,R73)、红(B32,G23,R228)图片各一张。
2.利用opencv识别以上三张图片上的颜色,识别到蓝色返回B,绿色返回G,红色返回R。

  • 写回答

2条回答

  • tangxiaoren 2019-12-20 15:40
    关注

    int main(int agrc, char *argv[])
    {

    cv::Size SrcImgSize(3507, 2480);
    cv::Mat BlueImg(SrcImgSize, CV_8UC3, cv::Scalar(170, 91, 4));
    cv::Mat GreenImg(SrcImgSize, CV_8UC3, cv::Scalar(126, 162, 73));
    cv::Mat RedImg(SrcImgSize, CV_8UC3, cv::Scalar(32, 23, 228));
    cv::imwrite("Blue.png", BlueImg);
    cv::imwrite("Green.png", GreenImg);
    cv::imwrite("Red.png", RedImg);
    // recognition
    cv::Mat testImg;
    testImg = cv::imread("Red.png");
    
    if (testImg.at<cv::Vec3b>(0, 0)[0] == 170 && testImg.at<cv::Vec3b>(0, 0)[1] == 91 && testImg.at<cv::Vec3b>(0, 0)[2] == 4)
    {
        std::cout << "Blue" << std::endl;
    }
    if (testImg.at<cv::Vec3b>(0, 0)[0] == 126 && testImg.at<cv::Vec3b>(0, 0)[1] == 162 && testImg.at<cv::Vec3b>(0, 0)[2] == 73)
    {
        std::cout << "green" << std::endl;
    }
    if (testImg.at<cv::Vec3b>(0, 0)[0] == 32 && testImg.at<cv::Vec3b>(0, 0)[1] == 23 && testImg.at<cv::Vec3b>(0, 0)[2] == 228)
    {
        std::cout << "red" << std::endl;
    }
    
    system("pause");
    

    }

    不知道你的具体要求,就按最简单的写了.

    评论

报告相同问题?

悬赏问题

  • ¥20 蓝牙耳机怎么查看日志
  • ¥15 Fluent齿轮搅油
  • ¥15 八爪鱼爬数据为什么自己停了
  • ¥15 交替优化波束形成和ris反射角使保密速率最大化
  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏