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 패키지를 이용한 설치
- Visual Studio를 실행하고 새로운 C# 콘솔 애플리케이션을 생성합니다.
- 도구(Tools) → NuGet 패키지 관리자 → 패키지 관리자 콘솔을 엽니다.
- 아래 명령어를 입력하여 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 최신 버전 다운로드
- OpenCV 공식 홈페이지에서 최신 OpenCV 버전을 다운로드합니다.
- Windows 사용자는 **pre-built binaries(미리 빌드된 바이너리 파일)**을 다운로드하면 설치가 더 간편합니다.
- 압축을 풀고, OpenCV가 설치된 경로를 확인합니다.
✅ 2. OpenCV 환경 변수 설정 (Windows 기준)
📌 1) 시스템 환경 변수 설정
- 내 PC → 속성 → 고급 시스템 설정 → 환경 변수로 이동합니다.
- 새로운 환경 변수 추가:
- 변수 이름: OpenCV_DIR
- 변수 값: C:\opencv\build (OpenCV가 설치된 경로)
- 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를 활용한 프로젝트를 진행하려면 먼저 환경을 구축하고, 간단한 예제부터 실행해 보세요!