Diretório de artigos
Prefácio
Como Lao Wang e eu queremos mudar para a indústria de computadores na direção da visão de máquina, pretendo começar a aprender OpenCV do zero. Mas atualmente o OpenCV possui duas linguagens oficiais, C++ e Python. Em C#, alguns especialistas adaptaram a versão correspondente do OpenCV. As características atuais das três línguas são
- C++: A eficiência de execução mais rápida, mas a sintaxe é extremamente difícil e o desenvolvimento é extremamente difícil
- Python: A eficiência de desenvolvimento é extremamente rápida, mas a eficiência de execução é extremamente lenta. Se não estiver bem otimizada, será mais de 20 vezes mais lenta que C++.
- C#: A eficiência de desenvolvimento é rápida, não muito mais lenta que Python, e a eficiência de execução é inferior a C++. Mas existem poucos tutoriais relacionados ao OpenCV
Qual linguagem de processamento de imagem tem melhores perspectivas: python, C++, Matlab ou Opencv?
Então tomei uma decisão difícil, mas correta, de desenvolver três idiomas ao mesmo tempo! Na verdade, são apenas três linguagens desenvolvendo a mesma função juntas.
Seleção de curso
Atualmente estou procurando tutoriais no site B e encontrei dois tutoriais com as visualizações mais altas. Se você está aprendendo do zero, ainda é recomendável assistir ao vídeo, pois você precisa entender muitos detalhes de configuração e operações do compilador. O objetivo neste período é que o código possa ser executado, o que é a vitória.
Vídeo de início rápido OpenCV4 C++ 30 palestras - coleção de séries
Existem duas classes no total, uma em Python e outra em C++. Como desenvolvedor, eu definitivamente faço o curso C++ primeiro, porque C++ é o mais difícil, desde que você consiga executá-lo.
Configuração do ambiente
Pitão
Já configurei antes, então colocarei o link diretamente aqui.
C#
Eu fiz isso em C# também
C++
Desta vez falarei principalmente sobre C++
Instalação do OpenCV e configuração do ambiente de desenvolvimento (C++)
Baixe o site oficial do OpenCV
Após baixar, descompacte-o
Crie um novo projeto C++
teste
Copiei esse código de outra pessoa
Instalação do OpenCV e configuração do ambiente de desenvolvimento (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;
}
Se a imagem a seguir aparecer, a operação foi bem-sucedida
Versão 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();
}
Versão Python
Python é completamente diferente de outros códigos.A lógica de nomenclatura de C++ e Csharp é basicamente a mesma, mas Python é um pouco única.
Depois de muito pesquisar online, finalmente descobri como desenhar. Não sei se Python e C++ são essencialmente iguais, mas os resultados mostrados são semelhantes.
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)
armazém rural
Criei um novo armazém, mas não parece fazer muito sentido. Devido à diferença no gerenciamento da biblioteca dos três arquivos, as bibliotecas globais de C++ e Python e Csharp são bibliotecas independentes para cada projeto. Portanto, é problemático criar novos projetos com frequência. Não vou criar um novo projeto aqui, apenas colar o código e utilizá-lo.
Resumir
Desta vez acabei de instalar o ambiente OpenCV, da próxima vez voltarei para aprender como usar corretamente três linguagens para escrever OpenCV.