刚开始用qt,安装qt和配置opencv网上教程丰富就不提类了。
其实opencv直接中终端编译也是可以的,只不过编译命令需要学习一下。
因为QT界面功能强大,故而选择qt,而用此IDE可以更快上手程序。QT常用的编译器就时qmake和cmake,简单来说qmake相对简单一些,可以在.pro文件中直接添加需要的库即可。
另一种cmake编译器,只不过把.pro文件换成CMakeList.txt即可,ROS常用。
第一种编译法成功调试过,但第二天因为ros和anaconda的python版本冲突,几经调试下,为图方便,把anaconda卸载类,后面qt中qmake kit套件就需要更新,这里强烈建议如果暂时不搞深度学习,不要先装anaconda,很多软件版本不匹配导致自己额外的调试修改。
qmake kit修改https://blog.csdn.net/yangbingzhou/article/details/31008527
修改完之后,可能会出现引用库问题 error while loading shared libraries: libjpeg.so9:
error while loading shared libraries: libjpeg.so16:
后续/usr/bin/ld: warning: libicui18n.so.56, needed by //opt/Qt5.10.0/5.10.0/gcc_64/lib/libQt5Core.so.5, not found问题
参考https://blog.csdn.net/qq_25738937/article/details/81837735
虽然为这调试半天还是有问题,为此为选择新建cmake的opencv程序,这个源程序可能没有多少变化,但是CMakeList.txt需要编写
cmake_minimum_required(VERSION 2.8)
project(usb_calibration_cmake)
add_executable(${PROJECT_NAME} "main.cpp")
if( CMAKE_BUILD_TYPE STREQUAL "Release")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -std=c++11 -fPIC")
else()
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0 -std=c++11 -fPIC")
#设置寻找外部库的cmake参数的
endif()
message("*** ${PROJECT_NAME}: Build type:" ${CMAKE_BUILD_TYPE} ${CMAKE_CXX_FLAGS} "***")
#设置cmake位置,
set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmakes)
#设置opencv的位置
set(OpenCV_DIR /home/fang/opencv-3.4.5/build)
find_package(OpenCV REQUIRED)
find_package(Qt5 REQUIRED COMPONENTS Core Widgets) #忘记添加qtcore头文件会报错
#-------------------------------------- 包含头文件 --------------------------------------
include_directories(${OpenCV_INCLUDE_DIRS})#设置opencv头文件包含路径,类似vs中的include路径
include_directories(${Qt5Widgets_INCLUDE_DIRS}) #用于qt套件
include_directories(${Boost_INCLUDE_DIRS})
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
#-------------------------------------- -添加项目- --------------------------------------
#file(GLOB_RECURSE HEADER_FILES ${CMAKE_CURRENT_SOURCE_DIR}/include/*.*h)可以用来添加头文件和源文件
#file(GLOB_RECURSE SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/*.c*)
#-------------------------------------- -添加链接库- --------------------------------------
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${OpenCV_LIBS} ${QT_LIBRARIES} #记得加上这些qt库
${Qt5Widgets_LIBRARIES} ${Boost_LIBRARIES} )
如果没有添加qt库和包,qt的头文件无法include,且cout都会声明没有定义的错误