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

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

      在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窗口打开并处在焦点的时候有效。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值