Ubuntu C++ opencv再写一个hello world(并解决常见错误)

Posted hans774882968

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ubuntu C++ opencv再写一个hello world(并解决常见错误)相关的知识,希望对你有一定的参考价值。

测试一下cv::imread+cv::imshow是否正常。

作者:hans774882968

需要用到make、cmake

main.cpp

#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;

int main (int argc, const char **argv) 
    const vector<string> paths = "壁纸1.png", "壁纸2.png", "壁纸3.jpg";
    const string pref = "/home/hans/图片/";
    for (string fname : paths) 
        const string imgPath = pref + fname;
        cout << imgPath << endl;
        for (int key = 0; key != 27; key = cv::waitKey (10) ) 
            cv::Mat srcImage = cv::imread (imgPath);
            cv::imshow (fname, srcImage);
        
    
    cv::waitKey (0);
    cout << "exit" << endl;
    return 0;

CMakeLists.txt

cmake_minimum_required (VERSION 3.10)
project (opencv_hw)

find_package(OpenCV REQUIRED)

set(CMAKE_CXX_STANDARD 17)

include_directories(/usr/local/include)

add_executable (opencv_hw main.cpp)
target_link_libraries(opencv_hw $OpenCV_LIBRARIES)

编译运行

mkdir build && cd build
cmake ..
make -j2 // 并行编译
./opencv_hw

运行正常。

常见错误

  1. error: (-206) Unrecognized or unsupported array type in function cvGetMat

    这也许是因为对应的路径不存在图片!

    注意:C++的opencv是支持中文路径的!不需要怀疑这方面,也就是说不要轻信csdn上的说法。

  2. 根据games101的Assignment1.pdf:”如果没有对虚拟机的核心数进行过设置,可以在 Virtual Box 里点击“设
    置”,在弹出的窗口中选择“系统—处理器”,然后就可以设置虚拟机的核心数了。“来设置内核个数,这样才能通过”-j2“进行并行编译

  3. ~/图片表示/home/<username>/图片,可以在终端里用,但不能在代码里用。

以上是关于Ubuntu C++ opencv再写一个hello world(并解决常见错误)的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu 14.04lts 上的奇怪编译错误 c++ opencv 2.4.10

记录ubuntu20.04成功编译安装opencv4 c++环境

记录ubuntu20.04成功编译安装opencv4 c++环境

Ubuntu 20.04下搭建C++ & OpenCV 4.6.0 & cmake编译

c++ Opencv sift 位置检测

Ubuntu 16.04 安装opencv的各种方法(含opencv contrib扩展包安装方法)