WPF OpenCV 프로젝트 #10: ROI(관심 영역) 자르기 및 저장 구현

이번에는 ROI(관심 영역) 자르기와 저장 기능을 WPF OpenCV 프로젝트에 구현해 보죠.지난 포스팅에서 OverlayCanvas를 이용해 ROI를 그릴 UI 뼈대를 만들었습니다. 이제 그 뼈대에 살을 붙여 실제로 작동하는 코드를 만들 차례입니다.오늘은 작업량이 좀 있습니다. 특히 마지막 좌표 계산 부분은 중요하니 끝까지 잘 따라와 주세요! Model: OpenCVService에 자르기 기능 추가 영상 처리에서 관심 영역을 잘라내는 것을 **크롭(Crop)**이라고 하죠? … 더 읽기

WPF OpenCV 프로젝트 #9: ROI(관심 영역) 설정을 위한 UI 구성 (OverlayCanvas)

ROI(관심 영역) 설정을 위한 UI 구성(OverlayCanvas)을 WPF OpenCV 프로젝트에서 다루겠습니다. 지난 포스팅에서 우리는 이미지를 불러와 확대/축소(Zoom)하고, 휠 버튼으로 이동(Panning)하는 기능까지 구현했습니다. 이제 영상 처리의 핵심이라 할 수 있는 관심 영역(ROI, Region of Interest) 기능을 구현해 볼 차례입니다. 전체 이미지를 통째로 처리하는 경우도 있지만, 현업에서는 특정 부분만 잘라내서 검사하거나, 모델을 등록하는 경우가 훨씬 빈번하니까요. 아무튼 ROI … 더 읽기

WPF OpenCV 프로젝트 #8: StatusBar 구현 및 실시간 좌표 표시

StatusBar 구현과 실시간 좌표 표시 기능을 이번 WPF OpenCV 프로젝트에 구현하도록 하겠습니다. 지난 포스팅까지 우리는 기본적인 UI 틀을 만들고, 마우스를 이용해 이미지를 확대/축소/이동(Zoom/Pan) 하는 기능까지 구현했습니다. 혹시 기억하시나요? 맨 처음 MainWindow.xaml에서 Grid를 구성할 때, Row를 2개(RowDefinition) 만들어 놓고 정작 1개만 썼던 진실을 눈치 채셨나요? 그리고 MainWindow.xaml.cs의 ZoomBorder_MouseMove 함수 마지막에 “// 좌표 출력”이라고 주석만 달아 놓고 … 더 읽기

WPF OpenCV 프로젝트 #7: WPF 이미지 확대 및 이동 구현 (Zoom/Pan)

Wafer 로딩 이미지

이번 시간에는 WPF 이미지 확대 및 이동 기능을 본격적으로 구현해 보겠습니다. 지난 포스팅에서 Border와 Canvas를 이용해 확대/축소를 위한 UI 그릇을 만들었습니다. 하지만 정작 실행해 보면 마우스 휠을 굴려도 WPF 이미지 확대 축소는 없었을 겁니다. 이벤트만 연결해 놓고 실제 코드를 작성하지 않았기 때문이죠.이번 시간에는 MainWindow.xaml.cs에 생명을 불어넣어 보겠습니다. 따라서 WPF OpenCV 프로젝트 #7에서는 마우스 이벤트로 이미지를 … 더 읽기

WPF OpenCV 프로젝트 #6: Image Zoom (확대/축소) 및 Image Panning (이동) UI 구현

Wafer 로딩 이미지

이번에는 Image Scaling (확대/축소) 및 Image Panning(이동) UI 구현에 대해 WPF OpenCV 프로젝트에 추가 하도록 하겠습니다.지난 포스팅까지 기본 UI를 만들어서 이미지를 띄워봤는데요. 혹시 큰 해상도의 이미지를 불러와 보셨나요? 아마 이미지가 ImageView 영역보다 크면 짤려서 나오고, 마우스로 움직이려 해도 꼼짝도 하지 않는 ‘애물단지’ 같은 상태였을 겁니다. 이러한 문제를 해결하기 위해, WPF OpenCV 이미지 확대와 같은 방법을 … 더 읽기

WPF OpenCV 프로젝트 #5: XAML UI 디자인 및 데이터 바인딩 (View)

WPF OpenCV 프로젝트 UI 실행 화면

XAML UI 디자인 및 데이터 바인딩(View)을 WPF OpenCV 프로젝트에 이제 추가해 보도록 하겠습니다. 지난 포스팅에서 ViewModel(두뇌)과 Model(심장)을 모두 구현했습니다. 이제 마지막 퍼즐인 View(얼굴)를 만들 차례입니다. 이번 시간에는 MainWindow.xaml을 작성하여 사용자가 이미지를 보고 조작할 수 있는 UI를 구성하고, MVVM 패턴의 꽃이라 할 수 있는 데이터 바인딩(Data Binding)이 어떻게 이루어지는지 자세히 알아보겠습니다. XAML UI 레이아웃 구상 먼저 … 더 읽기

WPF OpenCV 프로젝트 #4: MainViewModel 및 RelayCommand 구현 (MVVM)

지난 포스팅에서 OpenCVService(Model)를 구현했으니, 이제 WPF OpenCV 프로젝트의 화면(View)과 로직을 연결해 줄 ViewModel을 작성할 차례입니다. MVVM 패턴에서 ViewModel은 View(화면)가 보여줄 데이터를 가지고 있고, Model(서비스)에게 복잡한 연산을 시키는 ‘사령관’ 역할을 합니다. MainViewModel 구조와 역할 MainViewModel.cs는 UI 요소들과 데이터 바인딩(Binding) 되어야 하므로, 값이 바뀌면 화면에 즉시 알려주는 INotifyPropertyChanged 인터페이스를 상속받아 구현합니다. 이 클래스에는 다음과 같은 핵심 기능이 … 더 읽기

WPF OpenCV 프로젝트 #3: OpenCVService 구현 및 이미지 로드

지난 포스팅에서 MVVM 구조를 잡았으니, 이제 WPF OpenCV 프로젝트의 심장이라고 할 수 있는 OpenCVService.cs를 작성할 차례입니다. 이 클래스는 OpenCV 라이브러리를 사용해 이미지를 불러오고, 영상처리를 수행하며, 결과를 UI에 보여줄 수 있는 형태로 변환하는 역할을 담당합니다 . MVVM 패턴에서는 이 클래스를 Model 데이터를 다루는 서비스로 이해하시면 됩니다 . MVVM 기반 영상 처리 프로젝트를 위한 기능 설계 코드를 … 더 읽기

WPF OpenCV 영상처리 프로젝트 #2: OpenCvSharp 설치 및 MVVM 구조 설계

지난 포스팅에서 WPF OpenCV 프로젝트의 기본 틀을 만들었습니다. 이제 WPF OpenCV 프로젝트를 위한 핵심 엔진인 OpenCV 라이브러리를 설치하고, WPF의 디자인 패턴인 MVVM 구조를 잡는 작업을 진행하겠습니다 . 현업에서 검증 장비를 개발할 때, 알고리즘 파라미터를 UI에 즉각적으로 반영하는 것은 매우 중요합니다. 오늘 작성할 코드는 WPF OpenCV 프로젝트에서 반응 형 UI의 기초가 되는 부분입니다. WPF OpenCV 프로젝트를 … 더 읽기

WPF OpenCV 영상처리 프로젝트: VS 2022 및 .NET 8.0 환경 구축

WPF 기반 OpenCV 영상처리 플랫폼 프로젝트

들어가며 현업에서 영상처리 프로그램을 개발하다 보면 알고리즘 검증이나 이미지 분석을 위해 다양한 고민을 하게 됩니다. 특히 MIL이나 Halcon 같은 고가의 상용 라이브러리는 개인이 구매하여 테스트하기에는 비용 부담이 매우 크게 다가오죠. 또한 시대에 뒤쳐진 개발자처럼 보이게 하는 Winform 환경 보다는 WPF OpenCV 영상처리 를 사용하고 싶은 마음은 많은데, 어렵게만 느껴집니다. 여기서는 다음과 같은 WPF OpenCV 영상처리 … 더 읽기