OpenCV2学习(1)——显示图像

本文介绍如何在Linux环境下使用OpenCV2与Qt5.8.0进行图片显示的编程,包括配置环境、代码实现及两种编译方法:bash脚本与cmake。

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

2017.04.22


编程环境:

  • Linux Ubuntu 14.04
  • OpenCV 3.2.0
  • Qt 5.8.0

注:虽然是opencv3环境,但由于手头资料用的是OpenCV2,所以仍然是opencv2的编程风格,资料下载地址:
http://linux.linuxidc.com/index.php?folder=cHViLzIwMTEvMDgvMDQ=

main.cpp代码:

#include "highgui.h"
using namespace cv;
int main(int argc, char* argv[])
{
    //argc表示命令行的输入参数个数,argv[]表示参数数组,argv[0]指向程序本身,argv[1]指向第一个参数
    //cvLoadImage(argv[1])从argc[1]指向的图片路径载入图片
    IplImage* img = cvLoadImage(argv[1]);
    //cvNamdWindow()创建一个显示图片的窗口,窗口标题为"showImg",CV_WINDOW_AUTOSIZE表示窗口大小自适应图片大小
    cvNamedWindow("showImg",CV_WINDOW_AUTOSIZE);
    //cvShowImage()表示在窗口"showImg"中显示图片
    cvShowImage("showImg",img);
    //cvWaitKey(int delay=0)表示等待按键输入
    cvWaitKey(0);
    //cvReleaseImage(&img)释放图片内存
    cvReleaseImage(&img);
    //cvDestroyWindow("showImg")表示释放窗口内存
    cvDestroyWindow("showImg");
} 

编译文件有两种方式:
1. 在文件目录下编写build.sh脚本

#!/bin/bash
gcc main.cpp -o test_01_show_img `pkg-config --cflags --libs opencv`

上述脚本命令表示用gcc编译main.cpp,输出可执行文件test_01_show_img(可以自己命名),后面反引号表示将反引号中的命令结果作为参数传给之前的命令gcc,pkg-config --cflags --libs opencv 表示链接到opencv库

  • 在终端下进入目录,执行:sudo chmod u+x build.sh //修改文件执行权限
  • 终端下输入:./build.sh //通过脚本编译文件
  • 终端下输入 :./test_01_show_img ~/图片/00000.jpg //执行程序,显示~/图片 目录下的00000.jpg 图片

这里写图片描述

2.cmake方式

  • 将opencv的安装目录下opencv-3.2.0/samples/cpp/example_cmake 的CMakeLists.txt文件copy到工程目录下
    cp CMakeLists.txt ~/MyDemo/Opencv/test_01_show_img
  • 修改CMakeLists.txt:
    • project(opencv_example_project) –> project(test_01_show_img)
    • add_executable(opencv_example example.cpp) –> add_executable(test_01_show_img main.cpp)
    • target_link_libraries(opencv_example ${OpenCV_LIBS})–>
      target_link_libraries(test_01_show_img ${OpenCV_LIBS})
  • 在终端下进入到工程目录cd ~/MyDemo/Opencv/test_01_show_img
  • 执行:cmake .///生成makefile文件
  • 执行:make
  • 执行:./test_01_show_img ~/图片/00000.jpg
    这里写图片描述
    这里写图片描述

Notice:
1. 如果是在Qt中创建工程,并希望在Qt环境里编译运行,那么需要在.pro文件中添加下列代码,INCLUDEPATH表示文件路径,LIBS表示所用库的链接文件,与windows系统下的.dll文件类似。

INCLUDEPATH += /usr/local/include \
           /usr/local/include/opencv \
           /usr/local/include/opencv2
LIBS += /usr/local/lib/libopencv_highgui.so 

2. cvWaitKey()函数的功能是使程序暂停,并等待用户出发按键操作。

  • 参数默认值为0,如果参数是一个正数num,则程序将暂停一段时间,单位是num 毫秒。
  • 如果参数是0或者负数,程序将一直等待用户触发按键操作。
  • 返回值为按键的ASCII码,如ESC键返回值为27
  • 因此可以使程序循环执行下列代码,当用户按键ESC时退出循环

        while(!stop)
        {
            ...//循环执行的操作
            char c = cvWaitkey(time); //暂停time ms
            if(c == 27)
                stop = true;
            ...
        }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值