【 OpenCV】——在同一窗口显示两张图片
前言
本文介绍了窗口显示图像的基础内容。
使用步骤
##1.引入库
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
## 2.读入数据
//显示多个图像
void showManyImages(vector<Mat> srcImage)
{
int nImages = srcImage.size(); //准备显示的图像个数
Size nSizewindows; //准备显示图像的布局
nSizewindows = Size(2, 1);
if (nImages > 2) {
cout << "图像个数超过2个!" << endl;
return;
}
int nRows = 500; //单个图像的显示行
int nCols = 500; //单个图像的显示列
//创建矩阵
Mat dstImage(nRows, nCols * 2, CV_8UC3);
for (int i = 0; i < nImages; i++)
{
//修改图片的大小
resize(srcImage[i], srcImage[i], Size(nCols, nRows));
//将修改后的图片复制到dstImage中
srcImage[i].copyTo(dstImage(Rect((i % 2) * nCols, (i / 2) * nRows, nCols, nRows)));
}
imshow("单窗口显示两张图片", dstImage);
}
int main()
{
//2.在工程目录下新建子目录,把图像放入子目录中;
//3.以彩色方式打开图像并显示;
Mat img = imread("alpha.png");
if (img.empty())
{
return -1;
}
imshow("原图", img);
//4.以灰度方式打开图像并显示。
//Mat image;
Mat image = imread("alpha.png", IMREAD_GRAYSCALE);
//cvtColor(img, image, COLOR_BGR2GRAY);
if (image.empty())
{
return -1;
}
imshow("灰度图", image);
//5.新建窗口显示图像并显示,让图像停留5秒;
namedWindow("新建窗口", WINDOW_AUTOSIZE);
imshow("新建窗口", img);
waitKey(5000);
//6.存储第4步的灰度图像,并显示;
imwrite("alpha1.png", image);
imshow("灰度图", image);
//7.单窗口中同时显示图像和对应的灰度图像;
vector<Mat> imageVector(2);
imageVector[0] = imread("alpha.png");
imageVector[1] = imread("alpha1.png");
showManyImages(imageVector);
waitKey(0);
}
总结
以上是一个简单窗口显示图片的代码段,读取两张图片,该图片在窗口下进行显示。