本章节主要讲诉了相机识别相关的基础知识以及OpenCV的安装和应用。
1.首先进入官网对OpenCV进行安装:
选择Sources进行下载,再提取的自己设定的文件夹内以便于后期安装。
2.从文件下的路径下打开终端,随后先下载相关的依赖项
sudo apt-get install build-essential libgtk2.0-dev libvtk5-dev libjpeg-dev libtiff4-dev libopenexr-dev libtbb-dev
其中与书中不同的是“libjpeg-dev ”我没有安装,因为这个与Ubuntu20.04不兼容,
libjpeg-dev是用于处理 JPEG-2000 格式图像的开发库。在早期的 OpenCV 版本中,这可能是一个默认的依赖项。但是,随着时间的推移和新版本的发布,OpenCV 逐渐减少了对它的依赖,并改为使用其他图像处理库。
如果你没有安装 libjpeg-dev,OpenCV 在处理 JPEG-2000 格式图像时可能会受到影响,但这通常不会影响常见的 JPEG 或 PNG 图像处理功能。
3.对OpenCV进行安装:
mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv3 ..
make -j8
sudo make install
一定要将OpenCV安装在规定的路径之中,这里需要注意。
4.在KDevelop中进行项目构建,其中CMakLists.txt可以设置成为:
set( CMAKE_CXX_FLAGS "-std=c++11")
cmake_minimum_required( VERSION 2.8 )
project( imageBasics )
set(OpenCV_DIR "usr/local/opencv3/share/OpenCV")
# 寻找OpenCV库
find_package( OpenCV REQUIRED )
# 添加头文件
include_directories( ${OpenCV_INCLUDE_DIRS} )
# 可执行程序
add_executable( imageBasics imageBasics.cpp )
# 链接OpenCV库
target_link_libraries( imageBasics ${OpenCV_LIBS} )
# 可执行程序
add_executable(undistortImage undistortImage.cpp)
# 链接OpenCV库
target_link_libraries(undistortImage ${OpenCV_LIBS})
注意需要通过C++11的设置,以及对opencv3的路径进行确定,也就是上一步中cmake的路径。
5.第一个程序的运行中,需要规定图片ubuntu.png的位置,我是将其放在文件夹之中,在run后,在终端打开,输入:
./imageBasics /home/lpd/cod/ch5/imageBasics/build/ubuntu.png
则会出现对应结果:
运行第二个程序,结束后在终端输入:
./undistortImage /home/lpd/cod/ch5/imageBasics/build/distorted.png
可得:
注意,此处的照片在run时必须放在build的文件夹中,否则会显示编译失败:
/home/lpd/cod/ch5/imageBasics/build> /home/lpd/cod/ch5/imageBasics/build/undistortImage
terminate called after throwing an instance of 'cv::Exception'
what(): OpenCV(3.4.16) /home/lpd/library/opencv-3.4.16/modules/highgui/src/window.cpp:382: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'imshow'
*** Failure: /home/lpd/cod/ch5/imageBasics/build/undistortImage has crashed ***
6.针对双目视觉运行中的问题以及解决情况:
对CMakeLists.txt进行修改:
find_package(Pangolin REQUIRED)
find_package(OpenCV 3.0 REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
#添加Eigen头文件
include_directories("/usr/local/include/eigen3")
add_executable(stereoVision stereoVision.cpp)
target_link_libraries(stereoVision ${OpenCV_LIBS} ${Pangolin_LIBRARIES})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
注意:cpp文件中存在的decay_t
, remove_pointer_t
, enable_if_t
都属于C++14新引用的特性,所以需要保证g++的版本足够。其次我的eigen3是在官网下载,故路径与apt安装不同,如出现报错,自行修改。
在build时发现程序报错,原因是寻找不到png图片文件,我尝试修改图片路径,后发现没有用,和上文一样,必须保证图片和执行文件在同一个位置,故将其放入Build文件夹中,则运行成功:
同时,下方的warning我不清楚是什么原因,但对结果没有什么影响,故没有细究,希望大家懂的也可以帮助说明一下。