OpenCV中的基础操作(一)

最近天气越来越热,春天的气息也越来越浓了。这篇文章算是我专栏里的第一篇文章了(前面那个算是引言吧),这篇文章中主要介绍OpenCV中的基础操作,包括加载图片、显示图片、保存图片等操作。这篇文章里的大部分内容都来自OpenCV的官方教程,其中也有我自己的理解和一部分数字图像处理中的知识。

函数库

要完成这些操作,我们需要两个函数库:core module和highgui module。前者包括了OpenCV中的基础模块库,比如图片容器Mat;后者包含了负责输入输出操作的函数,如imreadimwrite

加载图片

首先,我们需要创建一个Mat对象来存储被加载的图片数据,然后就可以使用imread函数来加载图片了。

Mat image;
image = imread(argv[1], CV_LOAD_IMAGE_COLOR);

第一个参数是所要加载的图片的名字(包括路径),这里我们从命令行参数来获取。OpenCV支持大多数常见的图片格式,如bmp、png、jpeg等等。
第二个参数指定图片的格式:

  • CV_LOAD_IMAGE_UNCHANGED(<0)保持原加载图片的格式不变
  • CV_LOAD_IMAGE_GRAYSCALE(0)加载原图像的灰度(单通道)图
  • CV_LOAD_IMAGE_COLOR(>0)以RGB(三通道)格式加载原图像

如果只有第一个参数,默认会使用第三种格式:

Mat img = imread(filename)

显示图像

在加载完图像之后,我们便可以查看图像了。首先需要创建一个窗口以显示图片:

namedWindow( "Display window", WINDOW_AUTOSIZE );

第一个参数为窗口的名字,第二个参数为图片的处理方式,有以下两种方式:

  • CV_WINDOW_AUTOSIZE:窗口适应原图片大小
  • CV_WINDOW_NORMAL:图片适应窗口大小

在使用第二个参数时,你还需要使用|操作符指定图片是否保持纵横比:CV_WINDOW_KEEPRATIO为保持纵横比,CV_WINDOW_FREERATIO为不保持纵横比。

最后使用imshow函数更新窗口内容为刚刚加载的图片即可:

imshow("Display window", image);

当然,仅仅是这样还是不够的,你会发现运行程序之后,图片一闪而过,根本无法长时间显示图片。因此,我们需要通过waitKey函数设置窗口显示的时间(参数为等待时间,单位为ms)。这里我们设置时间为无限长(参数为0),直到用户按下任意键。

waitKey(0);

保存图片

保存图片的函数用法很简单,一般情况下只会用到前两个参数。第一个参数为图片的名字,记住一定要包含正确的图片格式(bmp、gif、png等),第二个参数为要保存的图片对象。

imwrite("rst_mage.jpg", rst_image);

第三个参数主要针对特定的格式,而且是以编码对(vector

vector<int> compression_params;
compression_params.push_back(CV_IMWRITE_PNG_COMPRESSION);
compression_params.push_back(9);
imwrite("alpha.png", mat, compression_params);

参考资料

知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值