Microsoft MVP성태의 닷넷 이야기
.NET Framework: 707. OpenCV 응용 프로그램을 C#으로 구현 - OpenCvSharp [링크 복사], [링크+제목 복사]
조회: 28496
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
(연관된 글이 1개 있습니다.)
(시리즈 글이 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
정성태

... 31  32  33  34  35  36  37  38  39  40  41  [42]  43  44  45  ...
NoWriterDateCnt.TitleFile(s)
12576정성태3/25/20218901개발 환경 구성: 558. Docker Desktop for Windows에서 DockerDesktopVM 기반의 Kubernetes 구성 (2) - k8s 서비스 위치
12575정성태3/24/20217987개발 환경 구성: 557. Docker Desktop for Windows에서 DockerDesktopVM 기반의 Kubernetes 구성
12574정성태3/23/202111930.NET Framework: 1030. C# Socket의 Close/Shutdown 동작 (동기 모드)
12573정성태3/22/20219776개발 환경 구성: 556. WSL 인스턴스 초기 설정 명령어 [1]
12572정성태3/22/20219308.NET Framework: 1029. C# - GC 호출로 인한 메모리 압축(Compaction)을 확인하는 방법파일 다운로드1
12571정성태3/21/20218485오류 유형: 706. WSL 2 기반으로 "Enable Kubernetes" 활성화 시 초기화 실패 [1]
12570정성태3/19/202112800개발 환경 구성: 555. openssl - CA로부터 인증받은 새로운 인증서를 생성하는 방법
12569정성태3/18/202111645개발 환경 구성: 554. WSL 인스턴스 export/import 방법 및 단축 아이콘 설정 방법
12568정성태3/18/20217329오류 유형: 705. C# 빌드 - Couldn't process file ... due to its being in the Internet or Restricted zone or having the mark of the web on the file.
12567정성태3/17/20218676개발 환경 구성: 553. Docker Desktop for Windows를 위한 k8s 대시보드 활성화 [1]
12566정성태3/17/20219005개발 환경 구성: 552. Kubernetes - kube-apiserver와 REST API 통신하는 방법 (Docker Desktop for Windows 환경)
12565정성태3/17/20216514오류 유형: 704. curl.exe 실행 시 dll not found 오류
12564정성태3/16/20217000VS.NET IDE: 160. 새 프로젝트 창에 C++/CLI 프로젝트 템플릿이 없는 경우
12563정성태3/16/20218953개발 환경 구성: 551. C# - JIRA REST API 사용 정리 (3) jira-oauth-cli 도구를 이용한 키 관리
12562정성태3/15/202110068개발 환경 구성: 550. C# - JIRA REST API 사용 정리 (2) JIRA OAuth 토큰으로 API 사용하는 방법파일 다운로드1
12561정성태3/12/20218669VS.NET IDE: 159. Visual Studio에서 개행(\n, \r) 등의 제어 문자를 치환하는 방법 - 정규 표현식 사용
12560정성태3/11/202110025개발 환경 구성: 549. ssh-keygen으로 생성한 개인키/공개키 파일을 각각 PKCS8/PEM 형식으로 변환하는 방법
12559정성태3/11/20219422.NET Framework: 1028. 닷넷 5 환경의 Web API에 OpenAPI 적용을 위한 NSwag 또는 Swashbuckle 패키지 사용 [2]파일 다운로드1
12558정성태3/10/20218918Windows: 192. Power Automate Desktop (Preview) 소개 - Bitvise SSH Client 제어 [1]
12557정성태3/10/20217566Windows: 191. 탐색기의 보안 탭에 있는 "Object name" 경로에 LEFT-TO-RIGHT EMBEDDING 제어 문자가 포함되는 문제
12556정성태3/9/20216861오류 유형: 703. PowerShell ISE의 Debug / Toggle Breakpoint 메뉴가 비활성 상태인 경우
12555정성태3/8/20218867Windows: 190. C# - 레지스트리에 등록된 DigitalProductId로부터 라이선스 키(Product Key)를 알아내는 방법파일 다운로드2
12554정성태3/8/20218689.NET Framework: 1027. 닷넷 응용 프로그램을 위한 PDB 옵션 - full, pdbonly, portable, embedded
12553정성태3/5/20219176개발 환경 구성: 548. 기존 .NET Framework 프로젝트를 .NET Core/5+ 용으로 변환해 주는 upgrade-assistant, try-convert 도구 소개 [4]
12552정성태3/5/20218428개발 환경 구성: 547. github workflow/actions에서 Visual Studio Marketplace 패키지 등록하는 방법
12551정성태3/5/20217342오류 유형: 702. 비주얼 스튜디오 - The 'CascadePackage' package did not load correctly. (2)
... 31  32  33  34  35  36  37  38  39  40  41  [42]  43  44  45  ...