读取和显示函数主要为:imread()和imshow()函数
imread函数,im是image的缩写,read就是读入一张图片
同理,imshow也是一样的
C++中读入的图片是按照矩阵(Matrix)进行存储的,故定义变量src的数据类型为Mat,也就是Matrix的缩写
程序所涉及到的函数讲解:
Mat src = cv::imread("E:/C++_workspace/beyond.jpg",IMREAD_GRAYSCALE);;
参数一:字符串E:/C++_workspace/beyond.jpg
传入图片路径,这里可以使用正斜杠(/
)或者俩反斜杠(\\
)均可
参数二:int flags,1表示彩色图,0表示灰度图;若不传该参数,默认为1
IMREAD_GRAYSCALE对应0,表示单颜色通道灰度图
IMREAD_COLOR对应1,表示三颜色通道彩色图,这里不保留透明度哈,需要注意
像png这类的图片,若要保存透明度信息可以传入IMREAD_ANYDEPTH,对应2进行保存透明度信息
具体情况具体分析,也可以直接传入数字
src.empty()
返回值为bool类型,若有数据,表示读入图片成功;反之,加载图片失败
namedWindow("yanyu",WINDOW_FREERATIO);
参数一:字符串yanyu表示创建的窗口名称
参数二:int flags,WINDOW_FREERATIO表示可以自适应大小,说白了就是用户可以进行缩放,其对应256,也可以直接传入256;遇到较大的图片时,可以考虑使用自适应展示;
若不传该参数,默认为1,WINDOW_AUTOSIZE对应1,表示原图多大就多大展示
imshow("yanyu", src);
该函数与namedWindow("yanyu",WINDOW_AUTOSIZE);
等价
其本质也是namedWindows(),只不过只默认是原图展示,过于大的图片会展示不全,无法自适应
waitkey(1000);
程序在此进行等候1000ms
若为0的话,图像暂停;人眼只能观察300ms以上的闪烁时长;小于300人眼察觉不出
destroyAllWindows();
销毁所有窗口
#include <opencv2/opencv.hpp>
#include <iostream>using namespace cv;
using namespace std;int main(int argc, char** argv) {Mat src = cv::imread("E:/C++_workspace/beyond.jpg",IMREAD_GRAYSCALE);if (src.empty()) {printf("load image is false...\n");return -1;}namedWindow("yanyu",WINDOW_FREERATIO);imshow("yanyu", src);waitKey(0);destroyAllWindows();return 0;
}