본문 바로가기
카테고리 없음

C#과 C++에서 OpenCV 최신 버전 적용 방법

by tasiklee 2025. 2. 14.

C#과 C++에서 OpenCV 최신 버전 적용 방법

컴퓨터 비전(Computer Vision)은 이미지를 분석하고 처리하는 기술로, 자율주행, 의료 영상 분석, 보안 시스템 등 다양한 분야에서 활용됩니다. 이러한 기술을 구현할 때 가장 많이 사용되는 라이브러리가 바로 OpenCV입니다.

OpenCV는 원래 C++ 기반으로 개발되었지만, Python, C#, Java 등 다양한 언어에서도 사용할 수 있습니다. 이번 글에서는 C#에서 OpenCvSharp을 이용한 OpenCV 적용 방법과 C++에서 최신 OpenCV 버전을 설치하고 적용하는 방법을 정리해 보겠습니다.


🟢 C#에서 OpenCvSharp 적용 방법

C#에서는 OpenCV를 직접 사용할 수 없기 때문에 OpenCvSharp이라는 래퍼 라이브러리를 사용해야 합니다. OpenCvSharp은 OpenCV의 기능을 .NET 환경에서 쉽게 사용할 수 있도록 해줍니다.

✅ 1. OpenCvSharp 설치 방법

📌 NuGet 패키지를 이용한 설치

  1. Visual Studio를 실행하고 새로운 C# 콘솔 애플리케이션을 생성합니다.
  2. 도구(Tools) → NuGet 패키지 관리자 → 패키지 관리자 콘솔을 엽니다.
  3. 아래 명령어를 입력하여 OpenCvSharp 패키지를 설치합니다.
Install-Package OpenCvSharp4
Install-Package OpenCvSharp4.Windows

OpenCvSharp4.Windows 패키지는 OpenCV의 네이티브 바이너리를 포함하고 있어, Windows 환경에서 추가 설정 없이 사용할 수 있습니다.


✅ 2. OpenCvSharp 기본 사용법

📌 이미지 불러오기 및 출력

using OpenCvSharp;

class Program
{
    static void Main()
    {
        // 이미지 로드
        Mat image = Cv2.ImRead("sample.jpg");

        // 윈도우 창에 이미지 표시
        Cv2.ImShow("Display Window", image);
        Cv2.WaitKey(0);
        Cv2.DestroyAllWindows();
    }
}

코드 설명:

  • Cv2.ImRead("sample.jpg"): 이미지를 불러옴
  • Cv2.ImShow("Display Window", image): 창에 이미지 표시
  • Cv2.WaitKey(0): 키 입력이 있을 때까지 대기
  • Cv2.DestroyAllWindows(): 모든 창 닫기

주의: sample.jpg 파일이 실행 파일이 있는 폴더에 있어야 합니다.

 


📌 RGB 이미지를 8bit 그레이 이미지로 변환하기

 
using OpenCvSharp;

class Program
{
    static void Main()
    {
        Mat image = Cv2.ImRead("sample.jpg");
        Mat grayImage = new Mat();
        
        // 그레이스케일 변환
        Cv2.CvtColor(image, grayImage, ColorConversionCodes.BGR2GRAY);

        // 결과 표시
        Cv2.ImShow("Grayscale Image", grayImage);
        Cv2.WaitKey(0);
        Cv2.DestroyAllWindows();
    }
}

💡 Cv2.CvtColor(image, grayImage, ColorConversionCodes.BGR2GRAY)를 사용하여 컬러 이미지를 흑백으로 변환할 수 있습니다.


📌 웹캠 실시간 영상 출력

 
using OpenCvSharp;

class Program
{
    static void Main()
    {
        using var capture = new VideoCapture(0);  // 웹캠 ID: 0
        using var window = new Window("Webcam");

        Mat frame = new Mat();
        while (true)
        {
            capture.Read(frame);
            if (frame.Empty()) break;

            window.ShowImage(frame);
            if (Cv2.WaitKey(1) == 27) break;  // ESC 키로 종료
        }
    }
}

📹 웹캠에서 실시간 영상을 가져와 화면에 표시할 수 있습니다.


🔵 C++에서 최신 OpenCV 적용 방법

C++에서는 OpenCV를 원래 그대로 사용할 수 있으며, 최신 버전을 직접 설치해서 활용해야 합니다.

✅ 1. OpenCV 최신 버전 다운로드

  1. OpenCV 공식 홈페이지에서 최신 OpenCV 버전을 다운로드합니다.
  2. Windows 사용자는 **pre-built binaries(미리 빌드된 바이너리 파일)**을 다운로드하면 설치가 더 간편합니다.
  3. 압축을 풀고, OpenCV가 설치된 경로를 확인합니다.

✅ 2. OpenCV 환경 변수 설정 (Windows 기준)

📌 1) 시스템 환경 변수 설정

  1. 내 PC → 속성 → 고급 시스템 설정 → 환경 변수로 이동합니다.
  2. 새로운 환경 변수 추가:
    • 변수 이름: OpenCV_DIR
    • 변수 값: C:\opencv\build (OpenCV가 설치된 경로)
  3. Path 변수 편집:
    • C:\opencv\build\x64\vc16\bin 추가

이렇게 설정하면 시스템에서 OpenCV 라이브러리를 인식할 수 있습니다.


✅ 3. Visual Studio에서 OpenCV 프로젝트 설정

📌 1) Project 속성 변경

  • C/C++ 탭에서 추가 포함 디렉터리 클릭
C:\opencv\build\include
  • 링커 탭에서 추가 라이브러리 디렉터리 클릭
 
C:\opencv\build\x64\vc16\lib

✅ 4. C++에서 OpenCV 기본 사용법

📌 1) 탐색기에서 이미지 로딩 및 Show

#include <opencv2/opencv.hpp>

int main() {
    cv::Mat image = cv::imread("sample.jpg");
    if (image.empty()) {
        std::cout << "이미지를 불러올 수 없습니다!" << std::endl;
        return -1;
    }

    cv::imshow("Image", image);
    cv::waitKey(0);
    return 0;

🖼️ cv::imread()를 사용하여 이미지를 로딩! 그리고 cv::imshow()로 최종적으로 보여줍니다~!


📌 2) RGB 이미지를 8bit 그레이 이미지로 변환하기

cv::Mat grayImage;
cv::cvtColor(image, grayImage, cv::COLOR_BGR2GRAY);
cv::imshow("Grayscale Image", grayImage);

🎨 OpenCV의 cvtColor()를 8bit Gray 이미지로 변환하는 함수


📌 3) 웹캠으로 실시간 영상 출력하기

#include <opencv2/opencv.hpp>

int main() {
    cv::VideoCapture cap(0);  // 웹캠 ID: 0
    if (!cap.isOpened()) return -1;

    cv::Mat frame;
    while (true) {
        cap >> frame;
        if (frame.empty()) break;

        cv::imshow("Webcam", frame);
        if (cv::waitKey(1) == 27) break;  // ESC 키로 종료
    }
    return 0;
}

📹 이렇게 되면 실시간으로 영상 출력을 하게 됩니다 ~!


🔥 C#과 C++ OpenCV 비교

구분C# (OpenCvSharp)C++ (OpenCV)

설치 방식 NuGet 패키지 직접 다운로드 및 환경 변수 설정
API 사용 편의성 간단한 래퍼 제공 원본 OpenCV API 사용
성능 다소 느릴 수 있음 최적화된 성능 제공
확장성 .NET 기반 프로젝트에 적합 C++ 기반 프로젝트에 최적

💡 C#은 OpenCvSharp을 이용해 빠르게 적용할 수 있지만, 성능이 중요한 프로젝트라면 C++을 사용하는 것이 더 유리합니다.


✅ 정리

  • C#에서 OpenCV를 사용하려면 OpenCvSharp을 설치해야 하며, 간편하게 NuGet 패키지를 이용할 수 있습니다.
  • C++에서는 OpenCV 최신 버전을 다운로드하여 직접 설정해야 하며, 환경 변수와 Visual Studio 프로젝트 설정이 필요합니다.
  • C#은 코드가 간결하고 편리한 반면, C++은 성능이 뛰어나므로 프로젝트 성격에 맞게 선택하면 됩니다.

📌 OpenCV를 활용한 프로젝트를 진행하려면 먼저 환경을 구축하고, 간단한 예제부터 실행해 보세요!