RoboMaster_SWPU铁人战队视觉组工作笔记(一)

QT5.9.4与OpenCV3.0.0配置

  大疆最近推出了他们的第二代妙算微型电脑manifold2,无人机和哨兵由于设计尺寸等原因考虑,优先选择妙算2作为机载电脑搭配,查看妙算2的技术手册发现配置的ubuntu版本为16.04LTS,opencv版本是3.0.0,故视觉组统一软件开发环境为ubuntu16.04、QT5.9.4、oepncv3.0.0,方便后期代码直接在妙算2上可以跑起来。
在这里插入图片描述
(一)QT安装与OpenCV源码编译

  在OpenCV的官网下载OpenCV3.0.0的源码,下载后是一个zip压缩文件,再下载QT5.9.4的run文件,在终端里面输入./qt-opensource-linux-x64-5.9.4.run就可以直接运行安装QT5.9.4了,是不是非常方便。
  接下来就是配置OpenCV3.0.0了,先把OpenCV的压缩包解压到home文件夹下,再添加OpenCV所需要的依赖库,参考这篇博文:在我的台式机上参考这篇博文就可以直接使用opencv库了,但在我的笔记本上却不行,详情请继续阅读。
  https://www.cnblogs.com/fx-blog/p/8213704.html.

  根据上面博文的教程依次执行,就可以在ubuntu里面编译好OpenCV的源码了,此时在/usr/local/lib下看见OpenCV的编译结果了。如果在编译期间,遇到有些文件没有找到,则自行百度解决(在编译的过程中,ippicv_linux_20141027.tgz需要在线下载,但速度非常慢,我们事先准备好这个压缩包,然后拷贝到/home/young/opencv-3.0.0/3rdparty/ippicv/downloads/linux-8b449a536a2157bcad08a2b9f266828b,这是我自己的路径,读者自行修改)。

  由于国庆放假,我把项目转到笔记本上做,发现了很多工程创建与opencv编译的问题。
  1、直接把台式机的工程拷贝到笔记本上,点击构建项目,发现显示“不能构建”,百度搜索问题后,发现要在QT界面的左边点击“项目”,在此选项下修改工程的构建目录即可。
  2、GCC/G++编译器默认的std是c++98的,不能支持多线程与mutex互斥量,显然要让QT支持C++11的新特性,百度后发现要在pro文件中,输入QMAKE_CXXFLAGS += -std=c++11即可,实测发现仅输入config -= c++11不行。
  3、运行工程时,提示找不到opencv库,但是我源码编译opencv时,已经在usr/local/lib中看到相关的so文件了嗒,究其原因,是因为我没有把编译步骤执行完毕,参考这篇博文。
  https://blog.csdn.net/public669/article/details/99044895.

------------------------------------------------------------------------------更新如下---------------------------------------------------------------------------
  因为opencv3.0.0不能用videocapture类改变摄像头参数,如曝光值,gamma,图像尺寸等,根据战队里面装机大师的描述,用opencv3.4.6就可以,所以我改用了opencv3.4.6啊。但改用3.4.6后,发现出现一些程序bug,不能正常运行我已经编好的程序,等我改好代码再来更新。
  卸载opencv3.0.0,百度一搜“ubuntu卸载opencv3.0.0”会出来相关的指导文章。
  安装opencv3.4.6和3.0.0有点不一样,主要是ippicv文件的处理过程,详细参考下面这篇文章。
  https://www.cnblogs.com/fighting25/p/10687564.html.
------------------------------------------------------------------------------更新如上---------------------------------------------------------------------------

(二)基于QT建立OpenCV项目

  在欢迎界面,选择新建项目,选择Non-Qt project C++模板,然后一路点击下一步,直到完成项目的创建。QT不支持项目名字是中文。
  QT会有输入不了中文的bug,解决办法:参考这篇博文
  https://blog.csdn.net/hanshihao1336295654/article/details/82885777.

  在项目的pro文件内输入OpenCV的库链接,这样就能在QT里编写OpenCV的代码了。

INCLUDEPATH += /usr/local/include \
               /usr/local/include/opencv \
               /usr/local/include/opencv2

LIBS += /usr/local/lib/libopencv_imgproc.so \
        /usr/local/lib/libopencv_highgui.so \
        /usr/local/lib/libopencv_core.so \
        /usr/local/lib/libopencv_imgcodecs.so \
        /usr/local/lib/libopencv_video.so \
        /usr/local/lib/libopencv_videoio.so \
        /usr/local/lib/libopencv_calib3d.so \
        /usr/local/lib/libopencv_imgproc.so.3.0 \
        /usr/local/lib/libopencv_ml.so \
        /usr/lib/x86_64-linux-gnu/libpthread.so

注意事项:
  1、显示的图片要放在工程里该项目的build文件夹内,不然就要通过绝对路径在程序里加载图片了。
  2、如何在一个工程里调用多个项目,在左下角的Debug内选择哪个为当前项目,点击“运行”按钮时,就执行哪个项目。

(三)摄像头与镜头选型
RoboMaster_SWPU铁人战队视觉组工作笔记(一)_第1张图片
RoboMaster_SWPU铁人战队视觉组工作笔记(一)_第2张图片
  根据江大小记的摄像头选型说明,摄像头选择全局曝光、高速120帧彩色工业相机,按着这些关键字我就找到了如上这款相机,花了我630大洋(开票加税),但这款相机是不带镜头的,这里发生了一个大坑,相机卖家给我说随便选一个CS镜头就可以匹配了,我就在淘宝上找了一款CS镜头,结果买回来镜后距离不合适,虽然有2.8mm–12mm的焦距可调,还是不能正常显示图像,景深非常短(景深(DOF),是指在摄影机镜头或其他成像器前沿能够取得清晰图像的成像所测定的被摄物体前后距离范围。而光圈、镜头、及拍摄物的距离是影响景深的重要因素),变成一个小显微镜了(将镜头直接接触显示屏,可以看清显示屏上面的点阵),我们现在要选一个镜后距离合适的,焦距可调的镜头回来(仝老师给了我们一个8mm镜头,发现可以正常显示画面,但画面比较窄,不利于跟踪高速移动的物体)。

你可能感兴趣的:(RM视觉)