OpenCV 基础(二) 显示图片

HighGUI(high-level graphical user interface)库是OpenCV将操作系统、文件系统和摄像机之类的硬件进行交互的一些功能的库文件,通过HighGUI库,我们可以方便的打开窗口,显示图像,读出或者写入图片,视频等,处理简单的鼠标,光标和键盘事件,也可以做一些控件比如滑动条等。

目的:将一张图片投影到窗口上

创建窗口

我们采用HighGUI中的cvNameWindow()来实现这个功能,其接受两个参数,第一个参数用来表示新窗口的名称,这个名称显示在窗口的底部,同时用作HighGUI中其他函数调用新窗口的句柄,第二个参数是一个标志,用来表示是否需要使窗口的大小自动适应读入图片的大小。

int cvNameWindows{

    const char* name;

    int flags = CV_WINDOW_AUTOSIZE  


};

需要注意的使flags,现在对flags的有效设置使0或者CV_WINDOW_AUTOSIZE,如果使用后者,HighGUI会根据图像的大小调整窗口大小。 

在窗口被创建以后,如果不使用此窗口时,涉及到销毁问题,需要使用函数:

void cvDestroyWindow( const char* name );

同时HighGUI也提供了句柄与窗口的相关处理函数:

void* cvGetWindowHandle(const char* name);

const char* cvGetWindowName(void* window_handle);

HighGUI库也提供了cvResizeWindow()用来调整窗口的大小:

void cvResizeWindow(

    const char* name;

    int width;

    int height;

)

载入图像

从磁盘中载入图像,OpenCV提供了cvLoadImage(),如下所示:

IplImage* cvLoadIamge(

    const char* filename,

    int iscolor = CV_LOAD_IMAGE_COLOR

);

当打开一张图片时,cvLoadImage并不分席文件扩展名,是通过分析图像文件的前几个字节来确定图像的编码格式,第二个参数iscolor有几个值可以选择,默认情况,图像以每个通道8位,3个通道的形式被读入,

cvLoadImage( filename, -1 ); //默认读取图像的原通道数

cvLoadImage( filename, 0 ); //强制转化读取图像为灰度图

cvLoadImage( filename, 1 ); //读取彩色图

与cvLoadImage相对应的是cvSaveImage(),实现了保存图像的功能,

int cvSaveImage(
    
    const char* filename;

    const CvArr* Image;

);

显示图像

在窗口中显示图片的函数是cvShowImage():

void cvShowImage(

    const char* name;
    
    const CvArr* image;

);

代码整理

#include<iostream>
#include<opencv2/opencv.hpp>
using namespace std;
using namespace cv;

int main(int argc, char** argv) {

	// Define Window Name
	char window_name[] = "Demo";

	// Define File Path
	char file_path[] = "Demo.jpg";

	// Create a named window with the name of the file
	cvNamedWindow(window_name);

	// Load the image from the given file name
	IplImage* img = cvLoadImage(file_path, 1);

	// Show the image in the named window
	cvShowImage(window_name, img);

	waitKey(0);

	// Clean up 
	cvDestroyWindow(window_name);
	cvReleaseImage(&img);

	return 0;
}

效果图如下

本文参考《学习OpenCV》等资料进行完善、更正,如有侵权,请联系作者删除、更改。

欢迎评论文章,给予宝贵建议,请关注作者,共同学习交流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值