opencv学习日记——图像的比较和融合,超美哈哈哈
图在后边哦,不看代码也要看看图,很酷,opencv绝了!!!
#include<iostream>
#include<opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
//定义两个矩阵并赋值,注意:float 与 CV 32FC1对应
float a[6] = {1, 2, 3, 4, 5, 6};
float b[6] = {0, 1, 2, 3, 4, 5};
Mat imga = Mat(2, 3, CV_32FC1, a);
Mat imgas = Mat(2, 3, CV_32FC1, b);
//保留较大或较小的数值进行保存
Mat myMax, myMin;
min(imga, imgas, myMin);
max(imga, imgas, myMax);
cout << myMin << endl;
cout << myMax << endl;
//读取图像
Mat img0 = imread("cat.jpg");
Mat img1 = imread("a1.jpeg");
//判断是否读取成功
if(img0.empty() || img1.empty())
{
cout << "图片读取失败" << endl;
return -1;
}
//因为读取的图像尺寸不同,故调整一张与第一张相同尺寸,并保存
Mat img11;
//原图 新图 尺寸
resize(img1, img11, Size(670, 471));
// imshow("img11", img11);//展示调整后图像
// imwrite("a11.jpeg", img11); //保存图像
//比较两幅图片保留最大或最小像素点形成新的图片
Mat comMax, comMin;
min(img0, img11, comMin);
max(img0, img11, comMax);
imshow("comMin", comMin);
imshow("imgMax", comMax);
//扣图
//定义670*471大小的图片
Mat src1 = Mat::zeros(Size(670, 471), CV_8UC3);
//位置(100,100)处 定义一个(300*300) 的矩形
Rect rect(100, 100, 300, 300);
//把这个矩形放在src1上,设为白色;
src1(rect) = Scalar(255, 255, 255);
//比较出图
Mat comsrc1, comsrc2;
min(img0, src1, comsrc1);
max(img0, src1, comsrc2);
imshow("comsrc1", comsrc1);
imshow("comsrc2", comsrc2);
//定义一个红色图像,比较出图
Mat src2 = Mat(471, 670, CV_8UC3, Scalar(0, 0, 255));
min(img11, src2, comsrc2);
imshow("comsrc2", comsrc2);
//比较灰度图
Mat img0G, img1G, comMinG, comMaxG;
cvtColor(img0, img0G, COLOR_BGR2GRAY);
cvtColor(img11, img1G, COLOR_BGR2GRAY);
min(img0G, img1G, comMinG);
max(img1G, img0G, comMaxG);
imshow("comMinG", comMinG);
imshow("comMaxG", comMaxG);
waitKey(0);
return 0;
}
‘’‘’‘’‘’‘’‘’‘
[0, 1, 2;
3, 4, 5]
[1, 2, 3;
4, 5, 6]