【opencv三】利用opencv读取显示图片

在opencv中读取显示图片的头文件是highgui.hpp。
整体代码如下,如要测试自己的图片,需要将代码段中的图片地址更改为自己图片的绝对路径。

#include "opencv2/highgui/highgui.hpp"
using namespace cv;

int main()
{
	Mat img = imread("H://vs2017//opencv_learning//ConsoleApplication1//1544516218.jpg");
	if (img.empty())
	{
		return -1;
	}
	namedWindow("Example1",WINDOW_AUTOSIZE);
	imshow("Example1",img);
	waitKey(0);
	destroyWindow("Example1");
    return 0;
}

代码解析:

Mat img = imread("Your Img Path");

imread函数:可以读取很多类型的图片,包括:BMP, DIB, JPEG, JPE, PNG, PBM, PGM, PPM, SR, RAS, and TIFF。最终返回一个Mat数据类型的数据,这是opencv处理的基础数据结构。


namedWindow("Example1",WINDOW_AUTOSIZE);

namedWindow函数:在屏幕上打开一个窗口,改窗口用来显示读取的图像,括号中的参数是预先定义了显示窗口的属性,第一个参数将窗口命名为“Example1”,第二个参数定义了窗口的属性,该参数默认值为“0”或者置为“WINDOW_AUTOSIZE”。

  • 参数“0”:图片显示的时候,不会考虑原始图片的尺寸,会根据窗口的大小显示。
  • 参数“WINDOW_AUTOSIZE”:通过改变窗口尺寸,显示图片真实的大小。

但此时图片还未显示,该指令仅仅是为图片的显示作准备工作。一般显示状态如下图所示。

imshow("Example1",img);

imshow函数:利用该函数将Mat数据结构显示在已经存在的窗口中(由namedWindow函数生成的窗口)。根据上述的参数“WINDOW_AUTOSIZE”,窗口的大小会自动根据原始图像的尺寸进行调整,并显示。


waitKey(0);

waitKey函数:该函数的参数可以是任意自然数。

  • 参数为‘0或者负数’:当读取到鼠标点击信号后,进入下面的程序段。
  • 参数为“大于0的自然数”:若该自然数为1000,则其含义为程序等待1000ms(1秒)后进入下面的程序段。

Note:在cv::Mat中,当图像超出作用域时,它们将被自动释放,这与标准模板库(STL)样式的容器类类似。这个自动重分配由内部引用计数器控制。在很大程度上,这意味着我们不再需要担心映像的分配和重新分配,这可以让程序员从OpenCV 1.0 IplImage强加的繁琐簿记中解脱出来。


destroyWindow("Example1");

destroyWindow函数:该函数会关掉图片显示窗口,并且回收内存。

在当前实例中,该函数的功能可以忽略。但未来对于更长的、更复杂的程序,程序员应该确保在超出范围之前清理窗口,以避免内存泄漏。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yuanCruise

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值