Microsoft MVP성태의 닷넷 이야기
.NET Framework: 707. OpenCV 응용 프로그램을 C#으로 구현 - OpenCvSharp [링크 복사], [링크+제목 복사],
조회: 42739
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
(연관된 글이 2개 있습니다.)
(시리즈 글이 10개 있습니다.)
.NET Framework: 707. OpenCV 응용 프로그램을 C#으로 구현 - OpenCvSharp
; https://www.sysnet.pe.kr/2/0/11402

.NET Framework: 708. C# - OpenCvSharp을 이용한 동영상(avi, mp4, ...) 처리
; https://www.sysnet.pe.kr/2/0/11403

.NET Framework: 709. C# - OpenCvSharp을 이용한 동영상(avi, mp4, ...) 처리 + Direct2D
; https://www.sysnet.pe.kr/2/0/11404

.NET Framework: 710. C# - OpenCvSharp을 이용한 Webcam 영상 처리 + Direct2D
; https://www.sysnet.pe.kr/2/0/11405

.NET Framework: 711. C# - OpenCvSharp의 Mat 데이터 조작 방법
; https://www.sysnet.pe.kr/2/0/11406

.NET Framework: 723. C# - OpenCvSharp 사용 시 C/C++을 이용한 속도 향상 (for 루프 연산)
; https://www.sysnet.pe.kr/2/0/11422

VC++: 123. 내가 만든 코드보다 OpenCV의 속도가 월등히 빠른 이유
; https://www.sysnet.pe.kr/2/0/11423

.NET Framework: 781. C# - OpenCvSharp 사용 시 포인터를 이용한 속도 향상
; https://www.sysnet.pe.kr/2/0/11567

개발 환경 구성: 447. Visual Studio Code에서 OpenCvSharp 개발 환경 구성
; https://www.sysnet.pe.kr/2/0/11971

Graphics: 38. C# - OpenCvSharp.VideoWriter에 BMP 파일을 1초씩 출력하는 예제
; https://www.sysnet.pe.kr/2/0/12485




OpenCV 응용 프로그램을 C#으로 구현 - OpenCvSharp

많은 분들이 알고 계시겠지만, ^^ C#을 위한 OpenCVSharp 라이브러리가 github/Nuget을 통해 배포중이므로,

shimat/opencvsharp 
; https://github.com/shimat/opencvsharp

OpenCvSharp3-AnyCPU
; https://www.nuget.org/packages/OpenCvSharp3-AnyCPU/

Visual Studio에서 다음과 같이 간단하게 참조 추가를 할 수 있습니다.

Install-Package OpenCvSharp3-AnyCPU -Version 3.3.1.20171117 

그 이후로는 C# 구문의 편리함을 누리며 코딩하시면 됩니다.

using OpenCvSharp;

class Program 
{
    static void Main() 
    {
        Mat src = new Mat("lenna.png", ImreadModes.GrayScale); // ver 3 방식
        // Mat src = Cv2.ImRead("lenna.png", ImreadModes.GrayScale); // ver 2 방식
        Mat dst = new Mat();
        
        Cv2.Canny(src, dst, 50, 200);
        using (new Window("src image", src)) 
        using (new Window("dst image", dst)) 
        {
            Cv2.WaitKey();
        }
    }
}

Windows Forms로 작업하는 경우 OpenCvSharp.Window를 별도로 띄우지 않고 Form 내에 이미지 출력을 하고 싶을텐데요. 이를 위해,

[Cpp] Converting Image
; https://github.com/shimat/opencvsharp/wiki/%5BCpp%5D-Converting-Image

다음과 같이 Mat으로부터 Bitmap을 출력해 사용하면 됩니다.

Mat mat = new Mat("foobar.jpg", ImreadModes.Color);
Bitmap bitmap = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(mat);

첨부 파일은 이미지를 gray scale로 로딩한 후 Canny 처리한 이미지를 각각의 PictureBox에 출력하는 예제입니다.

using OpenCvSharp;
using System;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            using (Mat src = new Mat("portal_start.png", ImreadModes.GrayScale))
            using (Mat dst = src.Canny(50, 200))
            {
                this.pictureBox1.Image = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(src);
                this.pictureBox2.Image = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(dst);
            }
        }
    }
}

그래서 이렇게 실행됩니다. ^^

opencv_sharp_1_1.png




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]






[최초 등록일: ]
[최종 수정일: 1/23/2022]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 



2019-07-03 05시24분
[MJLee] 안녕하세요. 프로그래밍 + open CV를 공부를 막 시작한 사람입니다. VS code에 openCV를 설치하려고 하는데, 어려움을 겪고 있어서요, NuGet Package Manager Extension을 설치했습니다. NuGet Package Manager : Add Package 로 OpenCvSharp-AnyCPU (>= 2.4.10.20170306) 추가하니 "Success! Wrote OpenCvSharp-AnyCPU@2.4.10.20170306 to d:\CVCODE\HelloVSCode\HelloVSCode.csproj. Run dotnet restore to update your project." 라고 팝업창이 뜹니다.
PS D:\CVCODE\HelloVSCode> dotnet restore 을 실행하면 아래와 같이 나와서 설치를 못 하고 있는데, 도움 주실 수 있으신지요? 감사합니다.
D:\CVCODE\HelloVSCode\HelloVSCode.csproj : error NU1100: '.NETCoreApp,Version=v2.2'에 대해 'OpenCvSharp-AnyCPU (>= 2.4.10.20170306)'을(를) 확인할 수 없습니다.
  285.04 ms에서 D:\CVCODE\HelloVSCode\HelloVSCode.csproj에 대한 복원에 실패했습니다.
[guest]
2019-07-03 10시32분
다음의 글을 참고하세요.

Visual Studio Code에서 OpenCvSharp 개발 환경 구성
; http://www.sysnet.pe.kr/2/0/11971
정성태

[1]  2  3  4  5  6  7  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
14029정성태10/17/20251041닷넷: 2372. C# - ssh-ed25519 유형의 Public Key 파일 해석파일 다운로드1
14028정성태10/17/2025913오류 유형: 985. openssh - ssh_host_ed25519_key 파일을 로드하지 못하는 문제
14027정성태10/15/20251122닷넷: 2371. C# - CRC64 (System.IO.Hashing의 약식 버전)파일 다운로드1
14026정성태10/15/20251201닷넷: 2370. 닷넷 지원 정보의 "package-provided" 의미
14025정성태10/14/20251189Linux: 126. eBPF (bpf2go) - tcp_sendmsg 예제
14024정성태10/14/20251383오류 유형: 984. Whisper.net - System.Exception: 'Cannot dispose while processing, please use DisposeAsync instead.'
14023정성태10/12/20252200닷넷: 2369. C# / Whisper 모델 - 동영상의 음성을 인식해 자동으로 SRT 자막 파일을 생성 [1]파일 다운로드1
14022정성태10/10/20252637닷넷: 2368. C# / NAudio - (AI 학습을 위해) 무음 구간을 반영한 오디오 파일 분할파일 다운로드1
14021정성태10/6/20252980닷넷: 2367. C# - Youtube 동영상 다운로드 (YoutubeExplode 패키지) [1]파일 다운로드1
14020정성태10/2/20252512Linux: 125. eBPF - __attribute__((preserve_access_index)) 활용 사례
14019정성태10/1/20252674Linux: 124. eBPF - __sk_buff / sk_buff 구조체
14018정성태9/30/20252025닷넷: 2366. C# - UIAutomationClient를 이용해 시스템 트레이의 아이콘을 열거하는 방법파일 다운로드1
14017정성태9/29/20252405Linux: 123. eBPF (bpf2go) - BPF_PROG_TYPE_SOCKET_FILTER 예제 - SEC("socket")
14016정성태9/28/20252746Linux: 122. eBPF - __attribute__((preserve_access_index)) 사용법
14015정성태9/22/20252158닷넷: 2365. C# - FFMpegCore를 이용한 MP4 동영상으로부터 MP3 음원 추출 예제파일 다운로드1
14014정성태9/17/20252085닷넷: 2364. C# - stun.l.google.com을 사용해 공용 IP 주소와 포트를 알아내는 방법파일 다운로드1
14013정성태9/14/20252850닷넷: 2363. C# - Whisper.NET Library를 이용해 음성을 텍스트로 변환 및 번역하는 예제파일 다운로드1
14012정성태9/9/20253073닷넷: 2362. C# - Windows.Media.Ocr: 윈도우 운영체제에 포함된 OCR(Optical Character Recognition)파일 다운로드1
14011정성태9/7/20253717닷넷: 2361. C# - Linux 환경의 readlink 호출
14010정성태9/1/20253560오류 유형: 983. apt update 시 "The repository 'http://deb.debian.org/debian buster Release' does not have a Release file." 오류
14009정성태8/28/20254026닷넷: 2360. C# 14 - (11) Expression Tree에 선택적 인수와 명명된 인수 허용파일 다운로드1
14008정성태8/26/20254548닷넷: 2359. C# 14 - (10) 복합 대입 연산자의 오버로드 지원파일 다운로드1
14007정성태8/25/20254951닷넷: 2358. C# - 현재 빌드에 적용 중인 컴파일러 버전 확인 방법 (#error version)
14006정성태8/23/20255222Linux: 121. Linux - snap 패키지 관리자로 설치한 소프트웨어의 디렉터리 접근 제한
14005정성태8/21/20254158오류 유형: 982. sudo: unable to load /usr/libexec/sudo/sudoers.so: libssl.so.3: cannot open shared object file: No such file or directory
[1]  2  3  4  5  6  7  8  9  10  11  12  13  14  15  ...