《实用OpenCV》<四> 图像和GUI窗口的基本操作(1)

来源:互联网 发布:天盾数据恢复中心 编辑:程序博客网 时间:2024/05/22 21:29

在窗口中显示硬盘中的图像

      在OpenCV里显示图片是非常容易的,highgui模块的imread(), namedWindow()和imshow()方法就可以解决。看一下例子4-1:在窗口里展示一张图片,按下Esc 或 q 或者 Q 可以退出。

    例 4-1 在窗口里展示图片

#include <iostream>#include <opencv2/highgui/highgui.hpp>using namespace std;using namespace cv; int main(int argc, char **argv){      Mat im = imread("image.jpg", CV_LOAD_IMAGE_COLOR);      namedWindow("Hello");      imshow("Hello", im);      cout << "Press 'q' to quit..." << endl;      while(char(waitKey(1)) != 'q') {}      return 0;}
分块将代码解释一下:
Mat im = imread("image.jpg", CV_LOAD_IMAGE_COLOR);

        创建一个cv::Mat类型的变量im (我们刚刚直接写的是Mat而不是cv::Mat是因为在最开始有申明了使用cv的命名空间,这是通常的做法),通过imread方法从硬盘读取image.jpg然后指定给im对象。CV_LOAD_IMAGE_COLOR是一个标签(在highgui.hpp头文件定义的一个常量),为了告诉imread当做一张彩色图片来加载。一张彩色图有三个通道——红、绿和蓝,而不像灰度图只有一个通道——亮度。im这里的类型是CV_8UC3,8代表每个像素在每个通道所在的位的数量,U代表无符号字符(每个像素的每一个通道是一个8位的无符号字符),C3代表三个通道。

namedWindow("Hello");imshow("Hello", im);

       首先创建了一个叫Hello的窗口(Hello也会显示在窗口的标题栏),然后在窗口里显示im对象存储的图像。就是这样了!剩下的代码是防止窗口退出和用户按下q或Q之前销毁窗口。

     这里值得注意的一个函数是waitKey()。它会一直等待一个按键事件(当n<=0)(注:鼠标拖动也会),或者如果n是正值的话会等待n毫秒。它会返回按键的ASCII码,或者返回-1如果指定的时间到了还没有按键的话。注意waitKey()仅仅是当OpenCV GUI窗口打开并处在焦点的时候有效。




2 0
原创粉丝点击