opencv图像读取与显示
1.opencv开发环境配置
opencv下载
当前选4.6.0版本。
选windows即可,这个对初学者友好,下载解压配置环境变量,
然后再用vs2019新建工程配置好opencv的头文件目录、目录及依赖库即可。
点击https://sourceforge.net/projects/opencvlibrary/files/4.6.0/opencv-4.6.0-vc14_vc15.exe/download,
在国内通过浏览器下载时很慢,可以通过Motrix或其他来下载。
2.opencv图像读写示例
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main(int argc, char** argv)
{
cout << "hello" << endl;
Mat image;
image = imread("G:/opencv/vs_opencv/lena.jpg");
if (image.empty())
{
cout << "image is empty." << endl;
return -1;
}
namedWindow("image");
imshow("image", image);
imwrite("1.png", image);
waitKey(0);
return 0;
}
3.opencv图像读写、显示API
3.1 图像读取 imread
在imgcodecs.hpp头文件中声明;
函数原型:
Mat cv::imread(const String & filename, int flags = IMREAD_COLOR) ;
从指定的路径读取文件,输出Mat图像矩阵;
函数参数:
1.filename:指定路径下指定扩展名的文件;
opencv支持文件格式:
1.Windows 位图 - * .bmp,* .dib
2.JPEG 文件 - * .jpeg,* .jpg,*.jpe
3.JPEG 2000文件 - * .jp2
4.便携式网络图形 - * .png
5.WebP - * .webp
6.便携式图像格式 - * .pbm,* .pgm,* .ppm * .pxm,* .pnm
7.TIFF 文件 - * .tiff,* .tif
2.flags:读取图片的方式,默认为IMREAD_COLOR,即为真彩色;
其他方式:
IMREAD_UNCHANGED 按原样返回加载的图像(使用Alpha通道)
IMREAD_COLOR 始终将图像转换为3通道BGR彩色图像
IMREAD_GRAYSCALE 始终将图像转换为单通道灰度图像
IMREAD_ANYDEPTH 在输入具有相应深度时返回16位/32位图像,否则将其转换为8位
IMREAD_ANYCOLOR 以任何可能的颜色格式读取图像
IMREAD_LOAD_GDAL 使用gdal驱动程序加载图像
IMREAD_REDUCED_GRAYSCALE_2 始终将图像转换为单通道灰度图像,图像尺寸减小1/2
IMREAD_REDUCED_COLOR_2 始终将图像转换为3通道BGR彩色图像,图像尺寸减小1/2
IMREAD_REDUCED_GRAYSCALE_4 始终将图像转换为单通道灰度图像,图像尺寸减小1/4
IMREAD_REDUCED_COLOR_4 始终将图像转换为3通道BGR彩色图像,图像尺寸减小1/4
IMREAD_REDUCED_GRAYSCALE_8 始终将图像转换为单通道灰度图像,图像尺寸减小1/8
IMREAD_REDUCED_COLOR_8 始终将图像转换为3通道BGR彩色图像,图像尺寸减小1/8
IMREAD_IGNORE_ORIENTATION 不要根据EXIF的方向标志旋转图像
3.2图像写入 imwrite
在imgcodecs.hpp头文件中声明;
函数原型:
CV_EXPORTS_W bool imwrite( const String& filename, InputArray img, const std::vector<int>& params = std::vector<int>());
用于将图像保存到指定的文件
函数参数:
1.filename:需要保存图像的文件名,要保存图片为哪种格式,就带什么后缀。
2.img:要保存的图像。
3.params:表示为特定格式保存的参数编码。
3.3图像显示 imshow
在highgui.hpp头文件中声明;
函数原型:
CV_EXPORTS_W void imshow(const String& winname, InputArray mat);
将图片显示在窗口中,通过设备屏幕展现出来。
函数参数:
1.winname:窗口名称;
2.mat:图像矩阵。