厌倦了每天重复复制问题,回退版本的重复劳动,希望能开发一个自动测试的工具,把这些重复劳动交给电脑来自动完成。
为了能识别出电视是不是正常工作,所以这个工具需要能通过摄像头来自动识别电视机处于关机,黑屏,显示正常图像,显示异常图像之类。基于这个需求,需要找一个图像处理开源库。在网上转了一圈,发现openCV是个比较热门的图像处理库。没有基础,那就边学边开搞吧。
由于我的笔记本运行的系统是UBUNTU,所以就选用了Qt+openCV来搭建开发软件。
首先要装Qt。最新的版本是QT5.8,去官网下载一个离线安装包,然后直接运行就可以了。我不知道安装完以后qtcreator被装到哪里去了,就在第一次打开qtcreator的时候把qtcreator给“lock to luncher”了,这样以后用起来会方便些
其次是下载openCV3,2,按照网上的教程,首先解压出源代码,然后在源代码里建立一个build目录。
进入build目录后,执行 如下命令:
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv320 .. make clean make install在执行完后,库文件会被安装到如下路径
/usr/local/opencv320
在安装完之后,一定要把 lib文件的路径放到/opt/openCV/opencv-3.2.0/openCV.conf 文件里去,否则的话,在运行时会出现这样的错误信息:
在这个文件中写入
/usr/local/opencv320/lib然后执行
sudo ldconfig
QtOpenCV: error while loading shared libraries: libopencv_core.so.3.2: cannot open shared object file: No such file or directory
到这里,配置工作就结束了,下面可以用qt建立一个项目测试一下opencv能不能正常工作
首先建立一个qt工程,图形界面的和终端应用程序都行。
然后在pro文件中加入头文件的包含路径和库文件的链接路径
INCLUDEPATH += /usr/local/opencv320/include \ /usr/local/opencv320/include/opencv \ /usr/local/opencv320/include/opencv2 LIBS += /usr/local/opencv320/lib/libopencv_core.so \ /usr/local/opencv320/lib/libopencv_highgui.so \ /usr/local/opencv320/lib/libopencv_imgcodecs.so \ /usr/local/opencv320/lib/libopencv_imgproc.so \ /usr/local/opencv320/lib/libopencv_ml.so \ /usr/local/opencv320/lib/libopencv_objdetect.so \ /usr/local/opencv320/lib/libopencv_photo.so \ /usr/local/opencv320/lib/libopencv_shape.so \ /usr/local/opencv320/lib/libopencv_stitching.so \ /usr/local/opencv320/lib/libopencv_superres.so \ /usr/local/opencv320/lib/libopencv_video.so \ /usr/local/opencv320/lib/libopencv_videoio.so \ /usr/local/opencv320/lib/libopencv_videostab.so \
之后,可以打开mainwindow.cpp (我建立的是一个GUI应用程序),在mainwindow.cpp里加上点测试代码
#include "mainwindow.h" #include "ui_mainwindow.h" #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> using namespace cv; MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent),ui(new Ui::MainWindow) { ui->setupUi(this); String title = "img"; cv::namedWindow( title,WINDOW_AUTOSIZE ); } MainWindow::~MainWindow() { delete ui; }剩下的,就是编译运行了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。