opencv库编译无法通过 系统Ubuntu16.04 + ROS 由于ros自带opencv,为简化操作直接采用该自带的openc环境进行学习和开发。
在最后一行添加ros中opencv路径
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/ros/kinetic/lib/x86_64-linux-gnu/pkgconfig export PKG_CONFIG_PATH打开了一个空白文件,插入下面的路径:
/opt/ros/kinetic/lib/x86_64-linux-gnu/首先创建QT console工程 更改*.pro文件
QT += core QT -= gui TARGET = my_code CONFIG += console CONFIG -= app_bundle CONFIG += c++11 console DEFINES += QT_DEPRECATED_WARNINGS INCLUDEPATH += /opt/ros/kinetic/include/opencv-3.3.1-dev/opencv \ /opt/ros/kinetic/include/opencv-3.3.1-dev/opencv2 \ /opt/ros/kinetic/include \ /opt/ros/kinetic/include/opencv-3.3.1-dev LIBS += /opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv* TEMPLATE = app SOURCES += main.cpp源文件如下:
#include <opencv2/highgui.hpp> #include <opencv2/core.hpp> #include <opencv2/opencv.hpp> #include <iostream> using namespace std; void onMouse(int event, int x, int y, int flags, void* param); main() { cv::Mat image; image = cv::imread("/home/ray/Code/OpenCV3book/src/images/girl.jpg" , cv::IMREAD_COLOR ); if(image.empty()) { cout << "读取失败" << endl; } cv::circle(image, cv::Point(image.cols/ 2, image.rows / 2), 100, cv::Scalar(0,255,0), 3); cv::Mat image2(image); cv::namedWindow("Image"); cv::namedWindow("Image2"); cv::imshow("Image", image); cv::waitKey(0); cv::imshow("Image2", image2); cv::waitKey(0); return 0;发现涉及到图片输出显示就会报错
网上搜索了一下解决方案,可能是QT版本问题。由于QT还用作PX4环境,选择其他IDE,这里选择了VScode
这里就简单多了
或者按照图片设置
CMakeLists.txt文件
# cmake for OpenCV Cookbook 3rd edition chapter 01 # your opencv/build directory should be in your system PATH # set minimum required version for cmake cmake_minimum_required(VERSION 2.8) find_package(OpenCV REQUIRED) # add executable add_executable( loadDisplaySave loadDisplaySave.cpp) add_executable( logo logo.cpp) add_executable( mat mat.cpp) # link libraries target_link_libraries( loadDisplaySave ${OpenCV_LIBS}) target_link_libraries( logo ${OpenCV_LIBS}) target_link_libraries( mat ${OpenCV_LIBS}) # copy required images to every directory with executable SET (IMAGES ${CMAKE_SOURCE_DIR}/images/puppy.bmp ${CMAKE_SOURCE_DIR}/images/smalllogo.png) FILE(COPY ${IMAGES} DESTINATION .) FILE(COPY ${IMAGES} DESTINATION "Debug") FILE(COPY ${IMAGES} DESTINATION "Release")OK,在vscode下直接编译运行: 结果
环境搭建成功
ps:当用到c++11时,要在CMakeLists.txt中添加
SET( CMAKE_CXX_FLAGS "-std=c++11 -O3")