C++PythonC# 三语言OpenCV从零开发(1):环境配置

文章目录

  • 前言
  • 课程选择
  • 环境配置
    • Python
    • C#
    • C++
      • OpenCV官网下载
      • 新建C++项目
      • 测试运行
      • Csharp版
      • Python版
  • gitee仓库
  • 总结

前言

由于老王我想转机器视觉方向的上位机行业,我就打算开始从零学OpenCV。但是目前OpenCV有两个官方语言,C++和Pyhont。C# 有大佬做了对应的OpenCV的版本的适配。目前三个语言的特点是

  • C++:运行效率最快,但是语法难度极大,开发难度极大
  • Python:开发效率极快,但是运行效率极慢,优化不好比C++慢20倍以上
  • C#:开发效率快,没比Python慢多少,运行效率比C++低点。但是OpenCV的相关教程较少

这个世界上有没有编程语言既有Python的开发效率,又有C/C++/Rust的性能?

在这里插入图片描述

图像处理语言中选择python、C++、Matlab还是Opencv前景会更好一些?

在这里插入图片描述

所以我做了个艰难而又正确的决定,三语言同时开发!其实就是三个语言同一功能一起开发而已。

课程选择

我目前在B站上面搜教程,找到两个最高播放量的教程。如果你是零基础学习,还是建议走一遍视频的,因为很多配置的细节,编译器的操作都是要了解的。这个时期的目标就是代码能跑通,就是胜利。

【2022B站最好的OpenCV课程推荐】OpenCV从入门到实战 全套课程(附带课程课件资料+课件笔记)图像处

在这里插入图片描述

OpenCV4 C++ 快速入门视频30讲 - 系列合集

在这里插入图片描述

一共两个课,一个是Python的,一个是C++的。作为开发,肯定是先C++的课,因为C++能跑就行,C++是最难的那个。

环境配置

Python

我之前配置过了,这里就直接放链接了

Python+OpenCV 零基础学习笔记(1-3):anaconda+vscode+jupyter环境配置

C#

C#我也搞过了

C# &OpenCV 从零开发(0):前言

C++

这次主要讲C++的

OpenCV安装及其开发环境配置(C++)

OpenCV官网下载

OpenCV官网

在这里插入图片描述

下好之后解压

在这里插入图片描述

在这里插入图片描述

新建C++项目

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

测试运行

这个代码我是抄别人的

OpenCV安装及其开发环境配置(C++)

#include <opencv2/opencv.hpp>  
#include <opencv2/core/core.hpp>  
#include <opencv2/highgui/highgui.hpp>  
#include <opencv2/imgproc.hpp>  
#include<iostream>  
using namespace std;
using namespace cv;
int main()
{Mat image = Mat::zeros(300, 600, CV_8UC3);circle(image, Point(300, 200), 100, Scalar(25, 110, 288), -100);circle(image, Point(400, 200), 100, Scalar(255, 123, 127), -100);imshow("Show Window", image);waitKey(0);return 0;
}

如果出现以下图片,则运行成功

在这里插入图片描述

Csharp版

static void Main(string[] args)
{Mat image = new Mat(300,600,MatType.CV_8UC3);image.Circle(new Point(300, 200), 100, new Scalar(25, 110, 288), -100);image.Circle(new Point(400, 200), 100, new Scalar(255, 123, 127), -100);Cv2.ImShow("Show Window",image);Cv2.WaitKey(0);//Console.WriteLine("Hello, World!");Console.ReadKey();
}

在这里插入图片描述

Python版

Python和别的代码完全不一样,C++和Csharp命名逻辑基本一致,就Python特立独行一点

网上找了半天,终于找到了如何绘画。不知道Python和C++本质上是不是一样的,反正显示的结果差不多

Python 用 OpenCV 画点和圆 (2)

import cv2
# python中需要np来辅助
import numpy as np
image =np.zeros((300, 600, 3), np.uint8)
cv2.circle(image,(300,200),100,(25,110,288),-100);
cv2.circle(image,(400,200),100,(255,123,127),-100);
cv2.imshow("Show Window",image)
cv2.waitKey(0)

在这里插入图片描述

gitee仓库

gclove2000 / C++_Csharp_Python_OpenCV

我新建了仓库,但是感觉意义不大。由于三个文件的库管理的区别,C++和Python的全局的库,Csharp是每个项目的库是分别独立的。所以频繁的创建新项目比较烦。我这里就不创建新项目了,直接把代码粘贴上了用就好了。

总结

这次只是单纯的安装OpenCV的环境,下次我回去了解如何正确使用三种语言来写OpenCV。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nginx+lua配置,一个域名配置https,docker集群使用

没安装kua的先安装lua 没有resty.http模块的&#xff0c;许配置 nginxlua配置&#xff0c;一个域名配置https&#xff0c;docker集群使用&#xff0c;一个域名配置https管理整个集群 lua做转发&#xff08;方向代理&#xff09; 1、ad_load.lua文件 ngx.header.content_typ…

五、基础篇 vue列表渲染

在v-for里使用对象用 v-for 把一个数组对应为一组元素 我们可以用 v-for 指令基于一个数组来渲染一个列表。v-for 指令需要使用 item in list形式的特殊语法&#xff0c;其中 list是源数据数组&#xff0c;而 item 则是被迭代的数组元素的别名。 <template><div clas…

WebRTC入门:基础的核心协议与概念(二十三)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只…

k8s云原生环境搭建笔记——第二篇

目录 1、使用普通方式安装prometheus和grafana1.1、安装kube-state-metrics容器1.1.1、下载并修改yaml文件1.1.2、导入kube-state-metrics镜像1.1.3、执行yaml文件目录 1.2、安装node-exploer1.2.1、创建名称空间prometheus1.2.2、执行yaml 1.3、安装prometheus1.3.1、创建集群…

「 典型安全漏洞系列 」03.跨站请求伪造CSRF详解

引言&#xff1a;CSRF&#xff08;Cross-Site Request Forgery&#xff0c;跨站请求伪造&#xff09;是一种攻击技术&#xff0c;通过使用用户的身份进行不诚实地操作&#xff0c;恶意用户可以在受害者&#xff08;目标&#xff09;的机器上执行一些未授权的操作。这可能会危及…

❤ Uniapp使用四( 高阶使用配置和各种实现篇)

❤ Uniapp使用四( 复杂配置和各种实现篇) uniapp引入 vant 引入方式 1、下载vant源码 方式一&#xff1a;从 Vant 官网首页进入 GitHub下载对应版本的压缩包,将文件解压后备用,确保下载的压缩包里有dist 文件夹 2、创建 uniapp 项目,在根目录下新建 一个文件夹wxcomponents …

SpringBoot教程(十五) | SpringBoot集成RabbitMq

SpringBoot教程(十五) | SpringBoot集成RabbitMq RabbitMq是我们在开发过程中经常会使用的一种消息队列。今天我们来研究研究rabbitMq的使用。 rabbitMq的官网&#xff1a; rabbitmq.com/ rabbitMq的安装这里先略过&#xff0c;因为我尝试了几次都失败了&#xff0c;后面等我…

flink1.15 维表join guava cache和mysql方面优化

优化前 mysql响应慢,导致算子中数据输出追不上输入,导致显示cpu busy:100% 优化后效果两个图对应两个时刻: - - -- 优化前 select l.id,JSON_EXTRACT(r.msg,$$.key1) as msgv (select id,uid from tb1 l where id?) join (select uid,msg from tb2) r on l.uidr.uid;-- 优化…

计算机网络(超详解!) 第二节 数据链路层(上)

1.数据链路层使用的信道 数据链路层使用的信道主要有以下两种类型&#xff1a; 1.点对点信道&#xff1a;这种信道使用一对一的点对点通信方式。 2.广播信道&#xff1a;这种信道使用一对多的广播通信方式&#xff0c;因此过程比较复杂。广播信道上连接的主机很多&#xff0…

MetaGPT入门(一)

本文在Win11操作系统下进行&#xff0c;工具pycharm 一、环境准备 1.建议使用conda虚拟环境 安装anaconda参考&#xff1a;Windows10下Anaconda的安装_windows anaconda 路径-CSDN博客 打开Anaconda Powershell Prompt命令窗口&#xff0c;输入下面命令&#xff0c;创建3.1…

使用vite框架封装vue3插件,发布到npm

目录 一、vue环境搭建 1、创建App.vue 2、修改main.ts 3、修改vite.config.ts 二、插件配置 1、创建插件 2、开发调试 3、打包配置 4、package.json文件配置 5、执行打包命令 pnpm build 6、修改index.d.ts 目录 一、vue环境搭建 1、创建App.vue 2、修改main.ts 3…

华为设备vlan下配置MSTP,STP选举

核心代码,不同实例&#xff0c;承载不同流量&#xff0c;为每个实例设置一个根网桥达到分流的效果 stp region-config //进入stp区域的设置 region-name R1 //区域命名为R1 instance 1 vlan 10 …