OpenCV 图像读取imread和写入imwrite

一、读取imread

函数 imread 的原型如下:

Mat imread(const String& filename,int flags = IMREAD_COLOR)

filename 指定读取的图像文件

flag 指定读取图像的颜色,并在 imgcodecs.hpp 头文件中由如下枚举类型定义和解释:

enum { IMREAD_UNCHANGED = -1, // 8 位,彩色或非彩色-----默认读取方式
    IMREAD_GRAYSCALE = 0, // 8 位,灰度
    IMREAD_COLOR = 1, //未改变深度、颜色
    IMREAD_ANYDEPTH = 2, //任意深度,未改变颜色
    IMREAD_ANYCOLOR = 4, //未改变深度,任意颜色
    IMREAD_LOAD_GDAL = 8 // 使用 gdaL 驱动程序
};

读取输入的图像文件之后,应检查操作是否成功。可使用成员函数 in_image.empty() 来实现这个检查。

二、显示imshow

void imshow(const String& winname,InputArray mat)

如果使用 WINDOW_AUTOSIZE 标志创建该窗口(winname),那么所显示的是原始大小的图像(mat)。

窗口的创建:

void namedWindow(const String& winname,int flags = WINDOW_AUTOSIZE)

OpenCV 窗口是通过程序中一个意义明确的名字来识别的。通过下面 highgui.hpp 头文件中的枚举给出该标志的定义及其说明:

enum { WINDOW_NORMAL = 0x00000000,
    //用户可以调整窗口的大小(无约束)
    //还可以将一个全屏窗口切换为常规窗口
    WINDOW_AUTOSIZE = 0x00000001,
    //用户不能调整窗口的大小,
    //窗口的大小由显示的图像所限制
    WINDOW_OPENGL = 0x00001000, // OpenGL 支持的窗口
    WINDOW_FULLSCREEN = 1,
    WINDOW_FREERATIO=0x00000100,
    //图像可任意使用(调整图像时可没有比例限制)
    WINDOW_KEE PRATIO = 0x00000000
    //调整图像时保持图像的缩放比例
};

三、写入imwrite

bool imwrite(const String& filename,InputArray img,const vector<int>& params=vector<int>())

这个函数将一幅图像(img)保存到一个文件(filename),作为第三个可选参数,一个“属性-值”对的向量指定编解码器的参数(为使用默认值将其设置为空)。编解码器由文件的扩展名决定。

四、在内部循环中处理事件

如果在一个窗口上显示一幅图像之后不再做任何事情,出乎意料地,将不再显示图像。在一个窗口显示一幅图像之后,我们应该开始一个循环,以获取和处理与用户和窗口交互有关的事件。通过如下函数可执行这样一个任务(从 highgui 模块中):

int waitKey(int delay=0)//默认是0

这个函数在数毫秒(delay>0)内等待一个按键操作,并返回键的编码,如果延迟结束时没有按键则返回 -1。如果 delay 是 0 或负数,那么函数一直等待直到一个键被按下。

记住,只有至少创建和激活一个窗口时,函数 waitKey 才会工作。

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值