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.mzph.cn/news/622480.shtml

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

相关文章

快速幂板子

快速幂是快速算 a 的 c 次幂 原理&#xff1a; 我们用分治思想是比一个一个乘快的 即比如我们求a的8次方 &#xff1a;a1*a1 a2 ,那么我们直接a2*a2 a4&#xff0c;a4*a4 a8 参数就是几次幂。返回值是对应参数的幂 &#xff08;这里对p取余了&#xff09;(一般也把a当参数…

vue 自定义网页图标 favicon.ico 和 网页标题

效果预览 1. 添加配置 vue.config.js 在 module.exports { 内添加 // 自定义网页图标pwa: {iconPaths: {favicon32: "./favicon.ico",favicon16: "./favicon.ico",appleTouchIcon: "./favicon.ico",maskIcon: "./favicon.ico",msTil…

Java进阶第一天

Java进阶第一天 文章目录 Java进阶第一天双列集合特点Map的常见APIMap集合的遍历方式 双列集合 特点 双列集合一次需要存一对数据,分别是键和值(键值对)键不能重复,值可以重复键和值一一对应 Map的常见API Map是双列集合的顶层接口,它的功能是全部双列集合都可以继承使用的…

memory泄露分析方法(java篇)

#memory泄露主要分为java和native 2种&#xff0c;本文主要介绍java# 测试每天从monkey中筛选出内存超标的app&#xff0c;提单流转到我 首先&#xff0c;辨别内存泄露类型&#xff08;java&#xff0c;还是native&#xff09; 从采到的dumpsys_meminfo_pid看java heap&…

【ROS2】使用C++实现简单的发布订阅方

1 构建自定义数据类型 1、自定义消息类型Student 1.1 创建base_interfaces_demo包 1.2 创建Student.msg文件 string name int32 age float64 height 1.2 在cmakeLists.txt中增加如下语句 #增加自定义消息类型的依赖 find_package(rosidl_default_generators REQUIRED) # 为…

C++ namespace高级用法

高级用法 C++中的命名空间(namespace)是一种用于组织代码的机制,它可以帮助避免命名冲突,并使代码更加清晰和易于维护。以下是C++命名空间的一些高级用法: 嵌套命名空间:命名空间可以嵌套在其他命名空间中,形成一个层次结构。嵌套命名空间可以进一步细化命名空间,使其更…

k8s operator从0到1实践

文章目录 环境准备一个k8s集群开发工具包mac安装 实践初始化operator项目核心逻辑编写测试验证验证 部署 参考 环境准备 一个k8s集群 推荐使用docker-desktop&#xff0c;本地单机集群 开发工具包 这里推荐使用脚手架工具kubebuilder 使用脚手架工具&#xff0c;能生成项目…

Java基础-常量,变量,数据类型-笔记

1.关键字分类 用于定义数据类型的关键字&#xff1a;class&#xff0c;interface&#xff0c;enum&#xff0c;byte&#xff0c;short&#xff0c;int&#xff0c;long&#xff0c;float&#xff0c;double&#xff0c;char&#xff0c;boolean,void。 用于定义流程控制的关键字…

「微服务」企业微服务架构

首先&#xff0c;来自Darren的消息是&#xff0c;微服务架构并不是构建大规模企业应用程序的新方式。Netflix和亚马逊等公司已经实施了微服务架构&#xff0c;在过去几年中提供了成功的产品。 但是微服务架构适合您的组织吗&#xff1f;答案不是简单的是或否&#xff0c;但我会…

【Vue样式绑定详细介绍】

Vue样式绑定详细介绍 1. 样式绑定2. 字符串语法3. 对象语法4. 数组语法4. 自动添加前缀5. 多重值 (2.x的.9版本或3.x) 1. 样式绑定 在Vue中&#xff0c;样式绑定是通过 v-bind:style 或简写 :style 来实现的&#xff0c;它允许你将多种样式动态地绑定到元素上&#xff0c;样式…

Atcoder beginner contest 336 -- D -- Pyramid

目录 D -- Pyramid: 题目大意&#xff1a; 思路解析&#xff1a; 代码实现&#xff1a; D -- Pyramid: 题目大意&#xff1a; 给你一个长度为n的数组&#xff0c;你可以对这个数组进行以下操作。 操作1&#xff1a;选择任意一个元素&#xff0c;使其值大小减一。 操作2&…

web前端javaScript笔记——(11)DOM

一、DOM简介 DOM简介 <!DOCTYPE html> <head><meta charset"UTF-8"><title></title><style></style><script type"text/javascript">/*宿主对象&#xff0c;由浏览器&#xff0c;运行环境为我们提供的对…

基于Java SSM框架实现学生成绩管理系统项目【项目源码+论文说明】

基于java的SSM框架实现学生成绩管理系统演示 摘要 学生成绩是高校人才培养计划的重要组成部分&#xff0c;是实现人才培养目标、培养学生科研能力与创新思维、检验学生综合素质与实践能力的重要手段与综合性实践教学环节。而学生所在学院多采用半手工管理学生成绩的方式&#…

FFmpeg技术详解

FFmpeg技术详解 本文概不介绍相关安装配置&#xff0c;详情请入官方或者其他大佬博客&#xff0c;此处做出推荐&#xff1a; https://ffmpeg.org/ FFmpeg官网 https://ffmpeg.github.net.cn/developer.html FFmpeg中文文档 https://blog.csdn.net/m0_47449768/article/details/…

如何安装Docker及对Docker环境进行配置

Linux环境 安装 在线安装 配置yum安装源 wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo yum安装docker yum -y install docker-ce-18.06.1.ce-3.el7 docker --version 离线安装 docker安装包下载&#x…

steam搬砖项目赚钱吗?低门槛副业月入5k真的假的?

steam搬砖项目一开始默默无闻&#xff0c;现在越来越受欢迎&#xff0c;因为大家都看到了该项目的长期稳定性。 steam搬砖项目主要是搬csgo游戏装备和道具&#xff0c;从steam购买&#xff0c;在网易Buff上出售&#xff0c;赚取差价。只需少量投资&#xff0c;即可获得长期稳定…

(框架设计-基础库建设) boost 库

“框架”这个词所有的开发都听过&#xff0c;但是有多少人能理解框架的作用&#xff1f;为什么要花那么大精力去弄一个框架&#xff1f;大家应该都听过各个大厂稍微大点的项目都会有一个“框架组”/“架构组”等。 费这么大人力组建一个组来 做框架/架构 到底值不值呢&#xff…

软件测试|Python requests库的安装和使用指南

简介 requests库是Python中一款流行的HTTP请求库&#xff0c;用于简化HTTP请求的发送和处理&#xff0c;也是我们在使用Python做接口自动化测试时&#xff0c;最常用的第三方库。本文将介绍如何安装和使用requests库&#xff0c;以及一些常见的用例示例。 安装requests库 首…

C++ 类、结构体

C 类、结构体 类可以将变量、数组和函数完美地打包在一起。 类与结构体 类的定义&#xff1a; class Person {private:int age,height;double money;string books[100];public:string name;void say(){cout<<"Im"<<name<<endl;}int get_age(){…

Python Matplotlib 动画教程:提高可视化吸引力的强大工具【第24篇—python:Matplotlib】

文章目录 &#x1f356; 方法一&#xff1a;使用pause()函数&#x1f680; 方法二&#xff1a;使用FuncAnimation()函数&#x1f94b; 线性图动画&#xff1a;&#x1f3bb; Python中的条形图追赶动画&#x1f30c; Python中的散点图动画&#xff1a;&#x1f6f9; 条形图追赶的…