1.利用opencv分别生成3507*2480的蓝(B170,G91,R4)、绿(B126,G162,R73)、红(B32,G23,R228)图片各一张。
2.利用opencv识别以上三张图片上的颜色,识别到蓝色返回B,绿色返回G,红色返回R。
求一个关于openCV的作业答案,有报酬。
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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");
}
不知道你的具体要求,就按最简单的写了.
解决 无用评论 打赏 举报