【WSL】【Opencv】【C++】在windows中使用WSL开发C++程序的环境搭建

news2024/11/15 19:48:59

文章目录

  • 基本环境
  • Ubuntu安装Opencv
    • 从源码安装opencv-4.x
    • 从源码安装opencv-3.x
    • 直接pkg包安装
  • CLion工程cmake文件写法
  • demo

基本环境

(1)安装WSL;
(2)安装cmake:

wget https://github.com/Kitware/CMake/releases/download/v3.20.0/cmake-3.20.0-linux-x86_64.tar.gz
tar -xzvf cmake-3.20.0-linux-x86_64.tar.gz
sudo ln -sf $(pwd)/cmake-3.20.0-linux-x86_64/bin/* /usr/bin/

(3)安装gcc++:

# 如果 Ubuntu 版本 < 18.04,需要加入仓库
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc
sudo apt-get install g++

(4)安装GDB:

sudo apt install gdb

(5)clion建立空工程后选择toolchains如下:
在这里插入图片描述

Ubuntu安装Opencv

从源码安装opencv-4.x

依赖:

sudo apt install build-essential cmake git pkg-config libgtk-3-dev \
    libavcodec-dev libavformat-dev libswscale-dev libv4l-dev \
    libxvidcore-dev libx264-dev libjpeg-dev libpng-dev libtiff-dev \
    gfortran openexr libatlas-base-dev python3-dev python3-numpy \
    libtbb2 libtbb-dev libdc1394-22-dev libopenexr-dev \
    libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev

去github下载最新包:https://github.com/opencv/opencv.git

或者去官网下载 一个版本:https://opencv.org/releases/

cd opencv-4.x
mkdir -p build && cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE ..
make -j8
sudo make install 

从源码安装opencv-3.x

方法同opencv-4.x,但安装路径有区别,得注意。

直接pkg包安装

不想编译也ok,直接:

sudo apt-get install -y libopencv-dev

CLion工程cmake文件写法

# 声明要求的 cmake 最低版本
cmake_minimum_required( VERSION 3.8 )

# 声明一个 cmake 工程
project( cpptest )

# 设置编译模式
set( CMAKE_BUILD_TYPE "Debug"  )

#set(OpenCV_DIR "/usr/local/share/OpenCV")
set(OpenCV_DIR "/usr/local/share/opencv4") # 给一个安装路径
find_package( OpenCV REQUIRED ) # 找包

#添加OpenCV头文件
include_directories(${OpenCV_INCLUDE_DIRS})

message(STATUS "OpenCV_INCLUDE_DIRS: ${OpenCV_INCLUDE_DIRS}")
message(STATUS "OpenCV_LIBS: ${OpenCV_LIBS}")

# 添加一个可执行程序
# 语法:add_executable( 程序名 源代码文件 )
add_executable( cpptest main.cpp)

# 将库文件链接到可执行程序上
target_link_libraries( cpptest  ${OpenCV_LIBS})

demo

#include <iostream>
#include<opencv2/opencv.hpp>//opencv简单程序标配头文件
using namespace cv;//使用cv命名空间

int main()
{
    Mat src=imread("/mnt/c/Users/kevin/Desktop/img.png");//读取图片,要提前将图片放在程序路径下
    imwrite("/mnt/c/Users/kevin/Desktop/img2.jpg",src);//保存结果图片
    return 0;
}

在这里插入图片描述

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

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

相关文章

作为运维你还在想要不要学Python?听听运维老司机怎么说

概述 今天闲聊下为什么我比较建议运维人员去学python… 建议运维一定要会开发 &#xff08;文末送读者福利&#xff09; 现阶段&#xff0c;掌握一门开发语言已经成为高级运维工程师的必备技能&#xff0c;不会开发&#xff0c;你就不能充分理解你们系统的业务流程&#xff…

SpringSecurity(十六)---OAuth2的运行机制(中)-密码、客户端凭据授权类型以及刷新令牌

一、前言 本篇将讨论剩余的授权类型以及使用刷新令牌重新获得令牌等内容&#xff0c;仍然以概念为主。下一节我们将通过一个SSO实例让大家对授权码授权类型更加熟悉。 二、实现密码授权类型 此授权类型也被称为资源所有者凭据授权类型。使用此流程的应用程序会假定客户端收集…

Spark 3.0 - 6.ML 自定义 Transformer 踩坑大全

目录 一.新征程开始 - 道阻且长 二.从源码入手 - 一探究竟 1.Tokenizer 2.UnaryTransformer 三.取源码精髓 - 照猫画虎 四.从实际出发 - 小试牛刀 五.扫重重障碍 - 补阙挂漏 1.Task not serializable 2.jsonEncode only supports string 3.Invisibility Error 4.Non…

补充(三)完善保密性三种定义的通俗表述及等价性的证明

目录 DEFINITION 2.3 完美保密加密方案的定义 LEMMA 2.5 完美保密方案的等价定义(一) LEMMA 2.7 完美保密方案的等价定义(二) 三个等价定义的通俗描述 等价性的证明&#xff08;手写过程&#xff09; DEFINITION 2.3 完美保密加密方案的定义 一个在明文空间M上的加密方案…

web前端期末大作业 html+css家乡旅游主题网页设计 湖北武汉家乡介绍网页设计实例

家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法&#xff0c;如盒子的嵌套、浮动、margin、border、background等属性的使用&#xff0c;外部大盒子设定居中&#xff0c;内部左中右布局&#xff0c;下方横向浮动排列&#xff0c;大学学习的前端知识点和布局方式都有…

外卖项目05---套餐管理业务开发

套餐&#xff1a;一组菜品的集合 点击之后就会弹出下面的界面&#xff1a; 上面是后台的管理操作&#xff0c;下面是处理完成后在用户端展示的界面效果&#xff1a; 目录 一、新增套餐 70 1.1需求分析 70 1.2数据模型 70 ​编辑1.3新增套餐---代码开发---准备工作&梳理…

vtk.js滚动切片

关于滚动切片&#xff0c;官方有一个很好的例子,如下图&#xff1a; 关键代码 const mapper vtkImageMapper.newInstance(); mapper.setInputConnection(rtSource.getOutputPort()); mapper.setSliceAtFocalPoint(true);//这一行切片的光照焦点必须要设置为true&#xff0c;否…

CSDN周赛第十期总结

文章目录竞赛概述题解熊孩子摆拜访问题目描述数据范围样例输入样例输出代码走楼梯题目描述输入描述输出描述样例输入 1样例输出 1代码括号上色输入描述&#xff1a;输出描述&#xff1a;输入样例&#xff1a;输出样例&#xff1a;代码喜水青蛙题目描述输入描述&#xff1a;输出…

spark3.0.2搭建教程

spark3.0.2搭建教程 spark3.0.2安装教程 文章目录spark3.0.2安装教程一、前期准备二、spark搭建&#xff08;一&#xff09;搭建1、将spark上传到虚拟机上2、解压安装包&#xff08;二&#xff09;、standalone&#xff08;独立部署&#xff09;模型1、修改配置文件&#xff0…

学生HTML静态网页基础水平制作DIV+CSS+JavaScript技术制作美食网页——美食城6页面

&#x1f468;‍&#x1f393;静态网站的编写主要是用HTML DIVCSS JS等来完成页面的排版设计&#x1f469;‍&#x1f393;,常用的网页设计软件有Dreamweaver、EditPlus、HBuilderX、VScode 、Webstorm、Animate等等&#xff0c;用的最多的还是DW&#xff0c;当然不同软件写出的…

高等数学(第七版)同济大学 习题10-2(前10题) 个人解答

高等数学&#xff08;第七版&#xff09;同济大学 习题10-2&#xff08;前10题&#xff09; 函数作图软件&#xff1a;Mathematica 1.计算下列二重积分:\begin{aligned}&1. \ 计算下列二重积分:&\end{aligned}​1. 计算下列二重积分:​​ (1)∬D(x2y2)dσ&#xff0c;…

【构建ML驱动的应用程序】第 7 章 :使用分类器编写推荐

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

动态内存管理❀C

目录❀动态内存管理的意义❀动态内存管理函数malloc - 申请空间free - 释放空间calloc - 申请空间realloc - 调整空间大小❀常见的动态内存错误对NULL指针的解引用操作 - err对动态开辟空间的越界访问 - err对非动态开辟内存使用free释放 - err使用free释放一块动态开辟内存的一…

Pycharm安装配置Pyside6

PySide6是在Python环境下的一套Qt6 API库。使用PySide6可以轻松创建基于Qt6的GUI程序&#xff1b;PySide6由Qt官方维护。 1. Pyside6的安装&#xff1a; 直接安装在原python上面&#xff0c;在cmd里运行&#xff1a;(网速慢使用阿里源源) pip3 install Pyside6 -i https://p…

网络安全——逻辑漏洞之越权漏洞

作者名&#xff1a;Demo不是emo 主页面链接&#xff1a;主页传送门创作初心&#xff1a;舞台再大&#xff0c;你不上台&#xff0c;永远是观众&#xff0c;没人会关心你努不努力&#xff0c;摔的痛不痛&#xff0c;他们只会看你最后站在什么位置&#xff0c;然后羡慕或鄙夷座右…

高通导航器软件开发包使用指南(8)

高通导航器软件开发包使用指南&#xff08;8&#xff09;7 电子速度控制器7.1 ESC固件更新7.1.1相关参数说明7.1.3在初始化期间启用更新7.1.4固件配置7.1.5固件从版本7.1.6更新程序7 电子速度控制器 7.1 ESC固件更新 高通公司Navigator支持ESC固件更新&#xff0c;无需连接或…

2022亚太C题详细思路

2022年亚太今日已经正式开赛&#xff0c;为了帮助大家更好的选题建模&#xff0c;这里首先对ABC三道题目进行浅要评析&#xff0c;以方便大家更好的择题。同时相关资料也会后续进行补充。预计明日公布各题统计选题人数以及较为完善的资料。今天作为第一天重要的是择好题&#x…

Tableau阈值设置及其使用

阈值又叫临界值&#xff0c;是指一个效应能够产生的最低值或最高值。 ——百度百科 文章目录前言一、案例中阈值的使用背景介绍二、设置阈值参数三、颜色区分四、可筛选设置总结前言 介绍Tableau阈值的设置&#xff0c;供各位小伙伴参考。本文案例来源于Tableau自带示例工作薄…

mysql 数据备份与恢复使用详解

一、前言 对一个运行中的线上系统来说&#xff0c;定期对数据库进行备份是非常重要的&#xff0c;备份不仅可以确保数据的局部完整性&#xff0c;一定程度上也为数据安全性提供了保障&#xff0c;设想如果某种极端的场景下&#xff0c;比如磁盘损坏导致某个时间段数据丢失&…