1、image.copyTo(ROI);
就是把image这张图复制(copy to)到ROI上。

2、image.copyTo(ROI,mask);
则是不仅把image这张图复制(copy to)到ROI上,且image对应mask中像素值为0的像素点都不会贴到ROI上。

#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;

//全局变量
Mat dst, dst1, dst2;
//载入原图
Mat src = imread("12.bmp", 1);

void print()
{
	cout << "键盘按键【1】:将原图复制并显示" << endl;
	cout << "键盘按键【2】:image.copyTo(ROI,mask);把image这" << endl;
	cout << "               张图复制到ROI上,且image对应mask中像素值为0的像素点都不会贴到ROI上" << endl;
	cout << "键盘按键【Esc】:退出程序" << endl;
	cout << "————————————————————————————————————————" << endl;
}

int main()
{
	print();
	//改变console(控制台)字体颜色  
	system("color 0B");

	//判断图片是否读入
	if (!src.data)
	{
		printf("读取图片image0错误~! \n");
		return false;
	}

	//循环轮询按键
	while (1)
	{
		//先显示原图
		namedWindow("原图");
		imshow("原图", src);

		//获取键盘按键
		int c = waitKey(0);
		//判断ESC是否按下,若按下便退出
		if ((c & 255) == 27)
		{
			cout << "程序退出!\n";
			break;
		}

		//根据按键的不同,进行各种操作
		switch ((char)c)
		{
		case '1':
			cout << "您正在进行复制图像操作" << endl;
			src.copyTo(dst);
			imshow("复制图1", dst);
			break;

		case '2':
			cout << "您正在进行带掩膜的复制图像操作" << endl;
			dst1 = Mat::zeros(src.size(), src.type());
			//cout <<dst1.size() << endl;
			src.copyTo(dst2, dst1);
			imshow("复制图2", dst2);
			break;
		}
	}
	return 0;
}

 

 

 

 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐