기사 디렉토리
머리말
Lao Wang과 저는 머신 비전 방향으로 컴퓨터 산업으로 전환하고 싶기 때문에 처음부터 OpenCV를 배울 계획입니다. 그러나 현재 OpenCV에는 C++와 Python이라는 두 가지 공식 언어가 있습니다. C#에서는 일부 전문가가 해당 OpenCV 버전을 채택했습니다. 현재 세 언어의 특징은 다음과 같습니다.
- C++: 가장 빠른 실행 효율성을 제공하지만 구문이 매우 어렵고 개발이 매우 어렵습니다.
- Python: 개발 효율성은 매우 빠르지만 실행 효율성은 매우 느립니다. 최적화가 제대로 이루어지지 않으면 C++보다 20배 이상 느립니다.
- C#: 개발 효율성은 빠르며 Python보다 크게 느리지 않으며 실행 효율성은 C++보다 낮습니다. 하지만 OpenCV와 관련된 튜토리얼은 거의 없습니다.
Python, C++, Matlab 또는 Opencv 중 어떤 이미지 처리 언어가 더 나은 전망을 갖고 있습니까?
그래서 세 가지 언어를 동시에 개발하기로 어렵지만 올바른 결정을 내렸습니다! 사실 같은 기능을 함께 개발하는 것은 단지 세 가지 언어일 뿐입니다.
코스 선택
현재 B 사이트에서 튜토리얼을 검색하고 있는데 조회수가 가장 높은 튜토리얼 2개를 찾았습니다. 처음부터 배우는 경우에도 많은 구성 세부 사항과 컴파일러 작업을 이해해야 하므로 동영상을 시청하는 것이 좋습니다. 이 기간의 목표는 코드를 실행하는 것, 즉 승리입니다.
[2022B 사이트 최고의 OpenCV 강좌 추천] OpenCV 풀코스 입문부터 실기(코스웨어 자료+코스웨어 노트 포함) 이미지 처리까지
총 두 개의 클래스가 있습니다. 하나는 Python에, 다른 하나는 C++에 있습니다. 개발자로서 저는 당연히 C++ 과정을 먼저 수강합니다. 왜냐하면 C++는 실행할 수만 있다면 가장 어려운 과정이기 때문입니다.
환경 구성
파이썬
예전에 구성해 놓은 적이 있어서 여기에 바로 링크를 걸어 놓겠습니다.
Python+OpenCV 제로 기반 연구 노트(1-3): anaconda+vscode+jupyter 환경 구성
씨#
C#에서도 해봤는데
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은 다른 코드와 완전히 다릅니다.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를 작성하는 방법을 다시 배워보도록 하겠습니다.