提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
采用opencv+vs2019
一、基本思路?
首先是将图片转换成hsv格式,再将相应纯色背景用inrange函数提取,使它变成一个二进制图,纯色部分为白色,其他部分为黑色,取反后则纯色部分为黑色,其他部分为白色,然后再建立一个纯色图像颜色为你想要更换的背景颜色,最后使用copyto函数将原图像拷贝过来
二、代码
代码如下
// Game.cpp : Defines the entry point for the console application.
//
#include "quickopencvC.h"
#include <opencv2/dnn.hpp>
using namespace cv;
using namespace std;
int main(int argc, char** argv) {
Mat src = imread("D://desktop//303030//opencv_tutorial_data-master//images//greenback.png"); // B, G, R
if (src.empty()) {
printf("could not load image....\n");
return -1;
}
namedWindow("输入窗口", WINDOW_FREERATIO);
imshow("输入窗口", src);
Mat image = src;
/*QuickDemo qd;
qd.inrange_demo(src);*/
Mat hsv;
cvtColor(image, hsv, COLOR_BGR2HSV);
Mat mask;
inRange(hsv, Scalar(35, 43, 46), Scalar(77, 255, 255), mask);//提取绿色
Mat redback = Mat::zeros(image.size(), image.type());
redback = Scalar(200, 10, 10);
bitwise_not(mask, mask);
imshow("mask", mask);
image.copyTo(redback, mask);//像素不为零的才拷贝过来(用mask做遮罩)
imshow("roi区域提取", redback);
waitKey(0);
return 0;
}