目录
1、加载图像(cv::imread)
2、显示图像 (cv::namedWindos 与cv::imshow)
3、修改图像 (cv::cvtColor)
4、保存图像(cv::imwrite)
5、代码演示
1、加载图像(cv::imread)
cv::imread 是 OpenCV 库中用于读取图像文件的函数,加载图像文件成为一个Mat对象。
它的原型如下:
using namespace cv;//写上这个命名空间,下面可以省cv::Mat imread(const std::string& filename, int flags = IMREAD_COLOR);
参数说明:
filename
:要读取的图像文件的路径和名称。flags
:可选参数,指定图像读取的方式,默认为cv::IMREAD_COLOR
。可以使用以下标志之一:
cv::IMREAD_COLOR
:(>0) 以彩色图像RGB格式读取图像(默认值)。cv::IMREAD_GRAYSCALE
:( 0) 以灰度图像格式读取图像。cv::IMREAD_UNCHANGED
:(<0) 以原始图像格式读取图像,包括 alpha 通道。返回值:
- 如果成功读取图像文件,则返回一个
cv::Mat
对象,该对象表示读取到的图像数据。- 如果无法读取图像文件或文件路径错误,则返回一个空的
cv::Mat
对象。
注意:OpenCV支持JPG、PNG、TIFF等常见格式图像文件加载
2、显示图像 (cv::namedWindos 与cv::imshow)
using namespace cv;//函数用于创建一个窗口来显示图像
void namedWindow(const std::string& winname, int flags = WINDOW_AUTOSIZE);//函数用于在指定的窗口中显示图像
void imshow(const std::string& winname, const Mat& img);
参数说明:
winname
:窗口名称,用于标识不同的窗口。flags
:可选参数,指定窗口的行为,默认为cv::WINDOW_AUTOSIZE
,表示窗口大小自动调整以适应图像大小。
(1)namedWindos功能是创建一个OpenCV窗口,它是由OpenCV自动创建与释放,你无需取销毁它。
(2)常见用法namedWindow("Window Title", WINDOW_AUTOSIZE)
(3)WINDOW_AUTOSIZE会自动根据图像大小,显示窗口大小,不能人为改变窗口大小 WINDOW_NORMAL,跟QT集成的时候会使用,允许修改窗口大小。
3、修改图像 (cv::cvtColor)
cv::cvtColor:改变其颜色、空间,从一个色彩空间转换到另一个色彩空间。
原型如下:
using namespace cv;void cvtColor(const Mat& src, Mat& dst, int code, int dstCn = 0);
参数说明:
src
:源图像,即要进行颜色空间转换的图像。dst
:目标图像,用于存储转换后的图像。code
:指定颜色空间转换的类型,例如cv::COLOR_BGR2GRAY
表示将 BGR 彩色图像转换为灰度图像、COLOR_BGR2HLS;dstCn
:可选参数,指定目标图像的通道数,默认为 0,表示与源图像通道数相同。
4、保存图像(cv::imwrite)
cv::imwrite
函数用于将图像保存到文件中。
using namespace cv;
using namespace std;bool imwrite(const string& filename, const Mat& img, const vector<int>& params = vector<int>());
参数说明:
filename
:要保存的图像文件的路径和名称。img
:要保存的图像。params
:可选参数,用于指定保存图像的压缩参数。返回值:
- 如果成功保存图像,则返回 true。
- 如果保存失败,则返回 false。
(1)只有8位、16位的PNG、JPG、Tiff文件格式,而且是单通道或者三通道的BGR的图像才可以通过这种方式保存
(2)保存PNG格式的时候可以保存透明通道的图片
(3)可以指定压缩参数
5、代码演示
#include<opencv2\opencv.hpp>
#include<iostream>using namespace cv;
int main(int argc, char** argv)
{// 加载图像Mat src = imread("test.jpg");if (src.empty()){printf("could not load image...\n");return -1;}// 创建窗口namedWindow("test opencv setup", CV_WINDOW_AUTOSIZE);// 显示图像imshow("test opencv setup", src);// 创建窗口namedWindow("output windows", CV_WINDOW_AUTOSIZE);Mat output_image;// 修改图像//cvtColor(src, output_image, CV_BGR2GRAY);cvtColor(src, output_image, CV_BGR2HLS);// 显示图像imshow("output windows", output_image);// 保存图像//imwrite("output_image.png", output_image);imwrite("output_image.tif", output_image);// 等待按键waitKey(0);// 关闭窗口destroyAllWindows();return 0;
}