文章目录
- 前言
- 课程选择
- 环境配置
- 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。