Каталог статей
Предисловие
Поскольку мы с Лао Вангом хотим переключиться в компьютерную индустрию в сторону машинного зрения, я планирую начать изучать OpenCV с нуля. Но в настоящее время OpenCV имеет два официальных языка: C++ и Python. Некоторые эксперты адаптировали соответствующую версию OpenCV для C#. Текущие характеристики трех языков таковы:
- C++: самая быстрая эффективность работы, но синтаксис чрезвычайно сложен, а разработка чрезвычайно сложна.
- Python: эффективность разработки чрезвычайно высока, но эффективность работы крайне низка. Если он плохо оптимизирован, он более чем в 20 раз медленнее, чем C++.
- C#: эффективность разработки высокая, ненамного медленнее, чем у Python, а эффективность работы ниже, чем у C++. Но есть несколько руководств, связанных с OpenCV.
У какого языка обработки изображений больше перспектив: Python, C++, Matlab или Opencv?
Так я принял непростое, но правильное решение — развивать три языка одновременно! По сути, это всего лишь три языка, совместно реализующие одну и ту же функцию.
Выбор курса
В настоящее время я ищу учебные пособия на сайте B и нашел два учебных пособия с наибольшим количеством просмотров. Если вы учитесь с нуля, все равно рекомендуется просмотреть видео, поскольку вам необходимо понимать многие детали конфигурации и операций компилятора. Цель на этом этапе состоит в том, чтобы код смог выполниться, что является победой.
Видео по быстрому старту OpenCV4 C++, 30 лекций — коллекция серий
Всего существует два класса: один на Python и один на C++. Как разработчик, я определенно сначала прохожу курс C++, потому что C++ — самый сложный, если вы можете его использовать.
Конфигурация среды
Питон
Я уже настроил его раньше, поэтому помещу ссылку прямо здесь.
Примечания к исследованию Python+OpenCV (1–3): конфигурация среды anaconda+vscode+jupyter
С#
Я тоже сделал это на C#
С++
На этот раз я в основном буду говорить о 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++, но показанные результаты схожи.
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)
Гити склад
Я создал новый склад, но мне кажется, что это не имеет особого смысла. Из-за разницы в управлении библиотеками трех файлов глобальные библиотеки C++ и Python, а также Csharp являются независимыми библиотеками для каждого проекта. Поэтому часто создавать новые проекты проблематично. Я не буду здесь создавать новый проект, просто вставлю код и пользуюсь.
Подведем итог
В этот раз я только что установил среду OpenCV. В следующий раз я вернусь, чтобы научиться правильно использовать три языка для написания OpenCV.