【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>/图片,可以在终端里用,但不能在代码里用。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值