clion + opencv环境搭建

news2024/10/6 0:28:43

    clion是一个jetbrains提供的c++开发环境,和idea,pycharm等开发工具类似,界面有很多相似的地方。

    clion内置了一个mingw的编译环境,自带了gcc,g++等命令,安装完clion之后,我们新建项目,它会使用内置的mingw环境。

    

    这样,我们就不用额外安装mingw环境了。

    后面为了使用opencv, 我们需要通过源码编译符合自己本机的opencv库。

    需要安装cmake,这个带gui。我本机的版本是:3.14。

    另一个就是需要下载windows下的opencv-4.5.5-vc14_vc15.exe,这个可执行程序解压之后,有源码和自带的opencv依赖库,依赖库,通过visual studio来搭建opencv的环境没有任何问题,但是通过clion来搭建,就各种报错。所以还是需要通过它的源码来编译安装一次。

    本机可能还需要python环境,我这里安装的python3.10是可以的,没有必要使用python2版本。

    前面的准备工作做好了,就可以进行编译了。

    我们运行opencv-4.5.5-vc14_vc15.exe ,它可以加压出源码sources和build版本的opencv。

    

     我们需要使用sources源码。mingw_build目录是我们新建的,用来存放opencv编译后的结果。打开cmake-gui,选择源码,构建目录,点击Configure按钮,设置生成器类型MinGW Makefiles,点击Finish开始配置:

    配置过程中,可能会因为下载opencv_video_io_ffmpeg.dll和opencv_video_io_ffmpeg_64.dll失败而报错,我们根mingw_build/CMakeDownloadLog.txt 中提示的githubusercontent地址手动下载这两个文件到sources/3rdparty/ffmpeg目录下:

    configure没有报错,提示done之后,就可以generate。

    前面安装了clion,自带了mingw编译环境,这里为了后续执行命令方便,可以把mingw可执行程序目录加入环境变量Path中:

D:\Program Files\JetBrains\CLion 2023.1.2\bin\mingw\bin

    最后还需要在命令行下执行编译命令。命令行下进入mingw_build目录,然后执行mingw32-make -j4编译,后面执行mingw32-make install安装。

    mingw32-make install之后,mingw_build目录下会生成一个install目录,这里就是编译好的opencv库。

 

    为了避免opencv程序运行是缺少动态链接库,我们把install\x64\mingw\bin目录也加入环境变量的Path中。

E:\opencv\mingw_build\install\x64\mingw\bin

    在clion中新建项目,指定存储目录,会生成一个CMakeList.txt,我们根据自己编译的opencv环境来进行如下设置:

cmake_minimum_required(VERSION 3.25)
project(opencvtutorial)

set(CMAKE_CXX_STANDARD 17)




set(OpenCV_DIR E:/opencv/mingw_build/install)
find_package(OpenCV 4 REQUIRED)
include_directories(E:/opencv/mingw_build/install/include)
add_executable(opencvtutorial main.cpp)
target_link_libraries(opencvtutorial ${OpenCV_LIBS})

     这里OpenCV_LIBS设置的环境变量为:

E:\opencv\mingw_build\install\x64\mingw\lib

    就是编译安装之后的install\x64\mingw\lib目录。 

    CMakeList.txt主要添加包含目录,就是程序中引入的opencv相关头文件,不会报找不到问题,设置库目录,就是把opencv相关的lib依赖加入项目中,避免编译报错。 

    编写代码:

#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/dnn/dnn.hpp>

using namespace std;
using namespace cv;

dnn::Net net;

int main() {
    cout << CV_VERSION << endl;
    string onnxfile = "E:\\workspace\\python\\aitutorial\\test.onnx";
    net = dnn::readNetFromONNX(onnxfile);
    if (!net.empty()) {
        float value = 1024;
        Mat inputBlob = Mat(1, 1, CV_32F, Scalar(value));
        net.setInput(inputBlob, "input");
        Mat output = net.forward("output");
        cout << "input value : " << value << endl;
        cout << "output : " << output.at<float>(0, 0) << endl;
    }
    waitKey(0);
    return 0;
}

     运行打印结果如下:

 

   我通过直接下载的opencv-4.5.5-vc14_vc15.exe运行生成的opencv/build结果,可以通过visual studio配置并成功运行opencv示例,但是在clion这里怎么都不行,所以就通过mingw环境编译了一次opencv,很幸运,最后成功了,看来不同的工具对应的环境还是差别很大的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/479610.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在KylinV10上使用DTS进行mysql8迁移至DM8

前言&#xff1a; MySQL 到 DM 的移植主要有以下几个方面的工作&#xff1a; 1&#xff0e;分析待移植系统&#xff0c;确定移植对象。2&#xff0e;通过数据迁移工具 DTS 完成常规数据库对象及数据的迁移。3&#xff0e;通过人工完成 MSQL 的移植。4&#xff0e;移植完成后对移…

从设计到产品

从设计到产品 最近上的一些课的笔记&#xff0c;从 0 开始设计项目的角度去看产品。 设计系统 设计系统(design system) 不是 系统设计(system design)&#xff0c;前者更偏向于 UI/UX 设计部分&#xff0c;后者更偏向于实现部分。 个人觉得&#xff0c;前端开发与 UI/UX 设…

使用 ESP32 设计智能手表 – 第 1 部分制作表盘

相关设计资料下载ESP32 智能手表带心率、指南针设计资料(包含Arduino源码+原理图+Gerber+3D文件).zip 人们可以使用智能手表轻松快速地访问消息、警报、健康信息和其他高级信息。虽然智能手表作为独立设备在形式上是革命性的,但当与人们携带的其他设备(例如智能手机或平板…

作为一个大学生你应该知道的事情

作为一个大学生你应该知道的事情 大学生毕业去向 今天&#xff0c;我们不写技术&#xff0c;来谈一谈大学生的毕业现状&#xff1a; 以下内容为本人的一些观点和看法&#xff0c;仅限于沟通交流。 大学生毕业去向 大学生的毕业去向大致可以分为&#xff1a;就业、自由职业、慢…

Python之常用设计模式

1、 设计模式 2、接口 interface.py #! /usr/bin/env python # -*- coding: utf-8 -*- # Date: 2018/12/1# class Payment: # def pay(self, money): # raise NotImplementedErrorfrom abc import ABCMeta, abstractmethod# 接口 # class Payment(metaclassABCMet…

低频量化之 可转债 配债数据及策略 - 全网独家

目录 历史文章可转债配债数据 待发转债&#xff08;进展统计&#xff09;待发转债&#xff08;行业统计&#xff09;待发转债&#xff08;5证监会通过&#xff0c;PE排序&#xff09;待发转债&#xff08;5证监会通过&#xff0c;安全垫排序&#xff09;待发转债&#xff08;5证…

JVM--一文精通

调整JVM堆内存 在确定JVM堆内存大小时&#xff0c;需要考虑以下因素&#xff1a; 应用程序的内存需求。操作系统和其他应用程序所需的内存。JVM的运行参数和GC算法。 根据通常的经验&#xff0c;可以将JVM最大堆内存设置为操作系统可用内存的约70%。也就是说&#xff0c;在1…

Kube-OVN组件

文章目录 介绍ovn架构kube-ovn架构kube-ovn数据流向软件版本及注意事项高可用部署安装kube-ovn运维查看Pod日志组件监控kubectl ko插件 网络相关 介绍 kube-ovn是基于ovn开发的。https://man7.org/linux/man-pages/man7/ovn-architecture.7.html ovn架构 组件说明&#xff1a…

PySide6/PyQT多线程之 信号与槽 / (Signal Slot)的高效利用

前言 PySide6/PyQT信号槽是一种事件处理方式&#xff0c;允许程序中的对象发送和接收信号。 在 PySide6/PyQT 精进的过程中&#xff0c;一定躲不开 信号和槽 这座大山&#xff0c;这是一个比较有意思的知识点&#xff1a; 初接触的看不懂&#xff0c;觉得复杂&#xff1b;看得…

【Linux】win10远程控制Linux服务器 - 内网穿透实现公网远程

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员&#xff0c;2024届电子信息研究生 目录 前言 视频教程 1. ubuntu安装XRDP 2.局域网测试连接 3. Ubuntu安装cpolar内网穿透 4.cpolar公网地址测试访问 5.固定域名公网地址 [TOC] 转载自远程穿透文章&#xff1a;Wi…

Redis的两种持久化方案 RDB AOF

文章目录 1.RDB持久化1.1.执行时机1.2.RDB原理1.3.小结 2.AOF持久化2.1.AOF原理2.2.AOF配置2.3.AOF文件重写 3.RDB与AOF对比 Redis有两种持久化方案&#xff1a; RDB持久化AOF持久化 1.RDB持久化 RDB全称Redis Database Backup file&#xff08;Redis数据备份文件&#xff09…

【三十天精通Vue 3】 第二十三天 Vue 3的错误处理详解

✅创作者&#xff1a;陈书予 &#x1f389;个人主页&#xff1a;陈书予的个人主页 &#x1f341;陈书予的个人社区&#xff0c;欢迎你的加入: 陈书予的社区 &#x1f31f;专栏地址: 三十天精通 Vue 3 文章目录 引言一、Vue 3 错误处理概览1. 错误处理的重要性2. Vue 3 中的错误…

EMS快递批量分析物流信息状况

众所周知“邮政快递”是在快递行业里面也是算一家行业龙头&#xff0c;中国邮政特快专递/EMS&#xff0c;邮政平邮小包&#xff0c;邮政挂件等&#xff0c;都是属于中国邮政集团&#xff0c;邮政速度快&#xff0c;价格也是比较实惠一家&#xff0c;所以很多产家或电商 、供应商…

大数据-玩转数据-FLINK快速上手

一、环境准备 ⚫系统环境为 Windows 10。 ⚫需提前安装 Java 11。 ⚫集成开发环境&#xff08;IDE&#xff09;使用 IntelliJ IDEA&#xff0c;具体的安装流程参见 IntelliJ 官网。 ⚫安装 IntelliJ IDEA 之后&#xff0c;还需要安装一些插件——Maven 和 Git。Maven 用来管理…

Java实现宿舍管理系统的设计与实现【附源码】

本科生毕业论文&#xff08;设计&#xff09; 宿舍管理系统的设计与实现 目 录 摘 要 I Abstract II 1 引言 1 1.1 研究背景 1 1.2 国内外研究现状 1 1.3 研究目的与意义 1 2 开发工具和相关技术 2 2.1 Eclipse 2 2.2 MySQL 2 2.3 Bootstrap 3 2.4 Tomcat 3 3 系统分析 3 3.1…

Java基础学习(11)

Java基础学习 一、集合进阶1.1 数据结构&#xff08;树&#xff09;1.1.1 二叉查找树1.1.2 二叉树的遍历 1.2 平衡二叉树树的演变 1.3 数据结构 ( 平衡二叉树 )左旋1.4 数据结构 ( 平衡二叉树 )右旋数据结构 (平衡二叉树)需要转的四种情况 1.5 红黑树添加节点规则 二、Set系列集…

基础算法(五):DFS、BFS与剪枝

前言 前面的基础算法笔记已经断更好久了&#xff0c;因为荔枝觉得还是得先学一下基础的数据结构知识之后才能更好的入门算法。在这篇文章中荔枝主要记录DFS和BFS的相关基础知识、答题的模板以及自己的一些浅薄理解&#xff0c;同样的也会涉及到相关的剪枝操作。 一、搜索算法概…

java基础学习-7

文章目录 异常小总结编译时异常和运行时异常小总结 异常在代码中的两个作用异常的方式JVM虚拟机默认处理异常的方式自己处理&#xff08;捕获异常&#xff09;灵魂四问抛出异常异常中的常见方法小总结小练习 自定义异常 File----路径File的概述和构造方法小总结 File的成员方法…

线性表之顺序表(C语言实现)

前言 &#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏: &#x1f354;&#x1f35f;&#x1f32f; c语言初阶 &#x1f511;个人信条: &#x1f335;知行合一 &#x1f349;本篇简介:>:讲解数据结构的入门知识,线性结构之顺序表. 金句分享:…

机器学习笔记 基于深度学习的边缘检测

一、Holistically-Nested Edge Detection 边缘检测是视觉工作中十分常用的技术,传统边缘检测已经包含了很多经典的诸如Canny、Robert等等,都是各有擅场,不过有一点问题,就是很多参数需要人工调试,所以深度学习研究人员提出了基于卷积神经网络的边缘检测算法。 即HED,该算…