day1-图像读取显示
用OpenCV开发模块,打开主机目录中的一张图片,
并显示在桌面上
函数:
highug模块中的imread,imshow,namedWindow,imwrite函数
Mat imread(const string& filename, int flags=1)
参数 | 说明 |
---|---|
filename | 读取文件的地址文件名 |
flags | 读取图像的颜色类别(flags=1:(默认参数)表示返回3通道图像;CV_LOAD_IMAGE_ANYEPTH:返回16bit或32bit图像(当输入相同深度时),否则返回8bit图像;CV_LOAD_IMAGE_COLOR:返回单色图像;CV_LOAD_IMAGE_GRAYSCALE:返回为通道图像;0:返回为单通道图像;<0:不对图像进行通道转换;>0:强制转换为3通道图像。 |
例1
//图像读取
Mat scr = imread("D:\\学习\\OpenCV学习\\pictures\\image\\1.jpg");
- ,imshow() 在指定的窗口显示一幅图像
void imshow(const String& winname, InputArray mat);
参数 | 说明 |
---|---|
winname | const string&类型的winname,指需要显示的窗口标识名称 |
mat | InputArray类型的mat,指需要显示的图像 |
notes:imshow() 1,只支持8位和浮点数显示 RGB颜色空间;
2, RGB颜色空间:B G R 三个通道 三色组合 255255255 还有透明通道
例2
imshow("窗口1",scr);//在创建的窗口1显示
void namedWindow(const String& winname, int flags = WINDOW_AUTOSIZE);
参数 | 说明 |
---|---|
winname | const String& 的 winname,用做窗口标识符的窗口名称 |
flags | 窗口的标识,一般默认为WINDOW_AUTOSIZE 通过显示的图像约束窗口的大小 |
notes:
CV_WINDOW_NORMAL 将窗口更改为正常大小或使窗口可调整大小。.
CV_WINDOW_AUTOSIZE 通过显示的图像约束窗口的大小。该窗口不可调整大小。.
CV_WINDOW_FULLSCREEN 将窗口更改为全屏.
CV_WINDOW_FREERATIO 使窗口在没有比率约束的情况下可调整大小.
CV_WINDOW_KEEPRATIO 使窗口可调整大小,但保留所显示图像的比例
例3
namedWindow("窗口1", WINDOW_NORMAL);//创建 WINDOW_FREERATIO窗口
int waitKey(int delay = 0);
waitKey函数的功能是不断刷新图像,频率时间为delay,单位为ms,返回值为当前键盘按下的值,没有按键时返回-1
例4
waitKey(0);//无限循环
while(1){ if(waitKey(100)==27)break; }
//在这个程序中,告诉OpenCv等待用户触发事件,
//等待时间为100ms,如果在这个时间段内, 用户按下ESC(ASCII码为27),则跳出循环,否则,则跳出循环
代码:
QuickDemo.cpp
#include <iostream>
#include <opencv2\highgui.hpp>
#include <opencv2\imgproc.hpp>
using namespace cv;
using namespace std;
int main()
{
Mat scr = imread("D:\\学习\\OpenCV学习\\pictures\\image\\1.jpg");//打开一张图
if (!scr.data == 1)//判空
return -1;
namedWindow("窗口1", WINDOW_FREERATIO);//创建 WINDOW_FREERATIO窗口
imshow("窗口1",scr);//在创建的窗口显示
waitKey(0);//延时 0->一直延时 1->延时1ms
return 0;
}
notes:
判空的条件(如上完整代码所示):
1,scr.empty();//判断是否为窗体,if未加载成功则是空白,print: could not laod image;
2,scr.data;//if(!scr.data)==1 未读取成功