C++&Python&C# 3개 언어 OpenCV 개발 처음부터 (1): 환경 구성

머리말

Lao Wang과 저는 머신 비전 방향으로 컴퓨터 산업으로 전환하고 싶기 때문에 처음부터 OpenCV를 배울 계획입니다. 그러나 현재 OpenCV에는 C++와 Python이라는 두 가지 공식 언어가 있습니다. C#에서는 일부 전문가가 해당 OpenCV 버전을 채택했습니다. 현재 세 언어의 특징은 다음과 같습니다.

  • C++: 가장 빠른 실행 효율성을 제공하지만 구문이 매우 어렵고 개발이 매우 어렵습니다.
  • Python: 개발 효율성은 매우 빠르지만 실행 효율성은 매우 느립니다. 최적화가 제대로 이루어지지 않으면 C++보다 20배 이상 느립니다.
  • C#: 개발 효율성은 빠르며 Python보다 크게 느리지 않으며 실행 효율성은 C++보다 낮습니다. 하지만 OpenCV와 관련된 튜토리얼은 거의 없습니다.

Python의 개발 효율성과 C/C++/Rust의 성능을 갖춘 프로그래밍 언어가 세상에 있습니까?

여기에 이미지 설명을 삽입하세요.

Python, C++, Matlab 또는 Opencv 중 어떤 이미지 처리 언어가 더 나은 전망을 갖고 있습니까?

여기에 이미지 설명을 삽입하세요.

그래서 세 가지 언어를 동시에 개발하기로 어렵지만 올바른 결정을 내렸습니다! 사실 같은 기능을 함께 개발하는 것은 단지 세 가지 언어일 뿐입니다.

코스 선택

현재 B 사이트에서 튜토리얼을 검색하고 있는데 조회수가 가장 높은 튜토리얼 2개를 찾았습니다. 처음부터 배우는 경우에도 많은 구성 세부 사항과 컴파일러 작업을 이해해야 하므로 동영상을 시청하는 것이 좋습니다. 이 기간의 목표는 코드를 실행하는 것, 즉 승리입니다.

[2022B 사이트 최고의 OpenCV 강좌 추천] OpenCV 풀코스 입문부터 실기(코스웨어 자료+코스웨어 노트 포함) 이미지 처리까지

여기에 이미지 설명을 삽입하세요.

OpenCV4 C++ 빠른 시작 비디오 30개 강의 - 시리즈 모음

여기에 이미지 설명을 삽입하세요.

총 두 개의 클래스가 있습니다. 하나는 Python에, 다른 하나는 C++에 있습니다. 개발자로서 저는 당연히 C++ 과정을 먼저 수강합니다. 왜냐하면 C++는 실행할 수만 있다면 가장 어려운 과정이기 때문입니다.

환경 구성

파이썬

예전에 구성해 놓은 적이 있어서 여기에 바로 링크를 걸어 놓겠습니다.

Python+OpenCV 제로 기반 연구 노트(1-3): anaconda+vscode+jupyter 환경 구성

씨#

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은 다른 코드와 완전히 다릅니다.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)

여기에 이미지 설명을 삽입하세요.

지티 창고

gclove2000 / C++_Csharp_Python_OpenCV

새로운 창고를 만들었지만 별 의미가 없는 것 같습니다. 세 파일의 라이브러리 관리 차이로 인해 C++ 및 Python의 전역 라이브러리와 Csharp는 각 프로젝트마다 독립적인 라이브러리입니다. 그래서 새로운 프로젝트를 자주 생성하는 것은 번거로운 작업입니다. 여기서는 새 프로젝트를 생성하지 않고, 코드를 붙여넣고 사용하면 됩니다.

요약하다

이번에는 방금 OpenCV 환경을 설치해 보았는데 다음에는 세 가지 언어를 올바르게 사용하여 OpenCV를 작성하는 방법을 다시 배워보도록 하겠습니다.

추천

출처blog.csdn.net/qq_44695769/article/details/135587859