opencv图像显示

本文详细介绍了如何使用OpenCV进行图像显示,包括图像读取函数imread、创建窗口namedWindow、显示图像imshow和等待显示完成waitKey的用法。imshow函数必须与waitKey配合使用,以确保图像正常显示,而destroyWindow和destroyAllWindows则用于销毁窗口。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

图像读取函数

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

filename:文件名

flags:图像类型,默认值1,彩色图像;0:灰度图像

图像显示

创建窗口

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

winname:用于显示图像的窗口名称

flags:窗口类型,默认值1,自适应图片大小(不可调);0:使用时可手动调整窗口大小

显示图像

void imshow(const String& winname, InputArray mat);

winname:用于显示图像的窗口名称,若无此窗口则创建

mat:用于显示的图像矩阵

官方说明:“函数imshow在指定的窗口中显示图像。 如果窗口是使用cv :: WINDOW_AUTOSIZE标志创建的,则图像将以原始大小显示,但仍然受到屏幕分辨率的限制。 否则,缩放图像以适合窗口。 此函数后面应跟有cv :: waitKey函数,该函数显示指定毫秒的图像。 否则,它将不显示图像。 例如,** waitKey(0)**将无限显示窗口,直到任何按键(适用于图像显示)。 ** waitKey(25)**将显示一个25毫秒的帧,之后显示将自动关闭。 (如果你把它放在一个循环中来阅读视频,它将逐帧显示视频)”

等待显示完成

int waitKey(int delay = 0);

功能:用于等待图像显示完成,等待时长delay,直到读取到按键。函数执行完成会关闭该图像。

官方说明:“函数waitKey无限地等待一个键事件(当\f$\texttt{delay}\leq 0\f$),或者当它为正数时,等待延迟毫秒。由于操作系统在切换线程之间的时间最短,该函数将不会等待确切的延迟ms,它将等待至少延迟ms,这取决于当时在您的计算机上运行的其他内容。它返回按下的键的代码,如果在指定的时间之前没有按下键,则返回-1。这个函数是HighGUI中唯一能够获取和处理事件的方法,因此需要定期调用它来进行正常的事件处理,除非在负责事件处理的环境中使用HighGUI。只有在至少创建了一个HighGUI窗口且该窗口处于活动状态时,该函数才能工作。如果有几个HighGUI窗口,其中任何一个都可以是活动的。”

输入参数delay:等待时长,单位毫秒,默认0:无限等待。

返回值:等待期间的按键值ASCII码值

销毁窗口

void destroyWindow(const String& winname);

输入参数winname:待销毁窗口名称

void destroyAllWindows();

销毁所有窗口

注:图像显示窗口需调用此函数手动销毁。否则可能会报错“0x00007FFE64A9D030 (ntdll.dll)处(位于 ImageProcessing.exe 中)引发的异常: 0xC0000005: 读取位置 0x0000000000000010 时发生访问冲突。”

如以下代码在VS中运行会报如上错误:

	char* imfile = "../lena-b.jpg";

	Mat im = imread(imfile);
	namedWindow("lena", 1);
	imshow("lena", im);
	waitKey();

	system("pause");
	return 0;

正确代码:

	char* imfile = "../lena-b.jpg";

	Mat im = imread(imfile);
	namedWindow("lena", 1);
	imshow("lena", im);
	waitKey();
	destroyAllWindows();

	system("pause");
	return 0;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值