C++ OpenCV #002 图像的读取,显示,保存


1. 函数原型

  • 读取图像:imread(filename, int flags=1)

    filename:文件路径

    int flags:值为1(IMREAD_COLOR)时,读取为彩色图;值为0(IMREAD_GRAYSCALE)时,读取为灰度图;默认值为1

  • 窗口设置:nameWindow(winname, int flags = WINDOW_AUTOSIZE)

    winname:窗口名称

    int flags:窗口的标识,默认为 WINDOW_AUTOSIZE

    WINDOW_NORMAL:      显示图像后,允许用户随意调整窗口大小   
    WINDOW_AUTOSIZE:    根据图像大小显示窗口,不允许用户调整大小 
    WINDOW_FREERATIO:  窗口大小自适应比例            
    WINDOW_KEEPRATIO:  保持图像的比例              
    
  • 注意:C++中imread方法读取RGB图像时,解码后的图像将以B G R的顺序存储通道。

2. 示例

#include<opencv2/opencv.hpp>
#include<iostream>
#include<string>

using namespace std;
using namespace cv;

int main() {
        // 读取为灰度图
	Mat src = imread("F:\\test\\1.jpg",IMREAD_GRAYSCALE);

	// 创建窗口,使得图片大小根据窗口手动调整
	namedWindow("my_windows", WINDOW_FREERATIO);

	// 判断图片是否为空
	if (src.empty()) {
	    cout << "图片不存在...." << endl;
	}

	// 显示图片,传入创建的窗口名称,矩阵对象
	imshow("my_windows", src);

	// 保存图像
	imwrite("F:\\test\\1_copy.jpg", src);

	// waitKey(0)阻塞程序,使得图片一直显示,否则一闪而过
	waitKey(0);
	// 清空所有窗口
	destroyAllWindows();

	return 0;
}

运行结果:



3. 图像的属性

Mat src = imread("F:\\test\\1.jpg",1);

src.size:图像的大小

src.rows:图像的高度

src.cols:图像的宽度

src.channel():图像的通道数
posted @ 2023-06-28 23:05  枫_Null  阅读(171)  评论(0)    收藏  举报