Blog

2 August 2019

mfc 영상처리 예제

세 가지 유형의 이미지 픽셀(회색 눈금, 색상 및 “원시” 정수)을 처리하기 위한 정규화 코드는 아래와 같습니다. RED() 매크로는 그레이스케일 코드에서 호출되어 정수 픽셀의 하위 바이트만 분리하는데, 이 경우 실제로 빨간색이 아닌 경우(명확성을 위해 동일한 작업을 수행하는 GREY() 매크로를 만들었을 것입니다). 이 함수는 듀얼 슬라이더 클래스에서 호출됩니다 (포함 h10 덕분에, CodeProject 기사 “두 개의 버튼이있는 슬라이더”, 9 8 월 2006). 정규화 기능은 이중 슬라이더에 연결되므로 이미지 크기와 시스템 속도에 따라 거의 실시간으로 슬라이더를 조정할 때 이미지를 정규화할 수 있습니다. 슬라이더가 변경될 때마다 동일한 시작 이미지에서 작동하도록 각 슬라이더 조정 전에 이미지가 “취소” 버퍼로 복사됩니다. 슬라이더는 함수에 전달된 nmin 및 nmax 변수를 제어합니다. 이 예제의 countdown_event 개체를 사용하면 이미지 처리 네트워크에서 모든 이미지가 처리될 때 주 응용 프로그램에 알릴 수 있습니다. countdown_event 클래스는 동시성::event 개체를 사용하여 카운터 값이 0에 도달하면 신호를 보입니다. 주 응용 프로그램은 네트워크에 파일 이름을 보낼 때마다 카운터를 증가시입니다. 네트워크의 터미널 노드는 각 이미지가 처리된 후 카운터를 삭제합니다. 주 응용 프로그램이 지정된 디렉터리를 통과한 후 countdown_event 개체가 해당 카운터가 0에 도달했음을 알리는 신호를 기다립니다.

다음 단계에서는 이 이미지 처리 네트워크를 구현하고 해당 네트워크를 지정된 디렉터리에서 모든 JPEG 이미지에 적용하는 함수를 만드는 방법을 보여 주었습니다. 네트워크는 이러한 조건 중 하나와 일치하는 첫 번째 이미지 처리 작업만 적용합니다. 예를 들어 Tom이 이미지를 작성하고 빨간색을 주요 색상으로 사용하는 경우 이미지는 회색조로만 변환됩니다. 변수 “mod”는 이미지의 저장된 상태를 유지하므로 이미지를 스택에서 터낼 때 SetModifiedFlag()에 대한 호출이 “저장된” 상태를 복원합니다. “힌트” 문자열의 목적은 이미지의 전체 메모리 저장없이 되돌릴 수 있는 특정 작업을 추적하는 것입니다. 예를 들어 이미지가 90도 회전하는 경우 UnDo 함수에서 이미지를 복원하기 위해 -90도 회전을 할 수 있도록 힌트를 사용할 수 있습니다. 따라서 모든 이미지 픽셀을 메모리에 저장할 필요가 없습니다. 이 실행 취소 기능은 현재 Imagr에서 구현되지 않았지만 더 빠른 기능을 제공하고 메모리 리소스를 절약할 수 있습니다.

Bize Ulaşın