Chapter 15 실전 프로젝트 01 친구 연락처 관리 프로그램 02 사진 처리 프로그램 예제 모음 요약 연습문제.

Slides:



Advertisements
Similar presentations
비즈쿨 - 정 성 욱 - - 금오공고 비즈쿨 - 정 성 욱 1. 나는 각 단원들의 활동들에 성실하게 참여 하겠습니다. 우리의 다짐 2. 나는 나와 전체의 발전을 위해 각 멘토들의 지도에 순종하겠습니다. 3. 나는 각 단원들을 숙지함으로써 비즈니스 마인드를 함양하고 자신의.
Advertisements

Python RaspberryPi Sejin Oh. Raspberry Pi Python  참과 거짓  Python 자료형의 참과 거짓을 구분 짓는 기준은 다음과 같다. 2 참과 거짓 자료형참 or 거짓 “” 가 아닌 문자열 ( 예 : “python”) 참 “” 거짓.
- 1 - 사용설명서 – 전자세금계산서 (EBANK36524) [ 회계 ] ERPM3 에서 입력한 매출세금계산서 ( 계산서 포함 ) 를 전자적으로 발행합니다. ( 전자세금계산서발행 메뉴 ) ** 국세청전송 년 11 월 1 일부터 시범운영.
장기요양 인력변경보고의 온라인신고 시행에 따른 사회복지시설정보시스템 사용안내
대기전력저감프로그램 인터넷 신고 방법 에너지관리공단 효율표준실 1.
메모장 다루기 A. 메모장 실행법 시작>모든 프로그램> 보조 프로그램>메모장 Notepad
1. 회사소개 2. 배너광고 소개 3. 블로그 홍보이벤트 소개 4. UCC 이벤트 소개 5. 패키지 제안.
03장 영상처리를 위한 Visual C++ 디지털 영상 파일 포맷 MFC 응용 프로그램 마법사를 이용한 MFC 프로젝트 작성
입출력 14.1 java.io 패키지의 개요 14.2 파일과 디렉토리
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
제9장 입출력과 JNI.
제 4장 문 장 배정문 혼합문 제어문 표준 입출력.
Chapter 02 자바 기본구조 자바 프로그래밍의 기초적인 문법을 소개
CHAP 20. 멀티미디어.
Java 12장. 입출력 public class SumTest {
8장 자바 입출력.
Chapter 14. 입출력 스트림.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 14. 포인터와 함수에 대한 이해.
Java Programming Language (4)
Chapter 1 디지털 영상처리의 개념.
10장 예외 (Exceptions).
명품 JAVA Programming 제 8 장 입출력 스트림과 파일 입출력.
25장. 메모리 관리와 동적 할당.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 02. 프로그램의 기본구성.
명품 Java Programming.
Software Engineering Project
Chapter 06. 선택문.
주소록 프로그램.
4장. 컴퓨터 구조에 대한 두 번째 이야기 작성자: 윤성우.
자바 5.0 프로그래밍.
노인인플루엔자등록시스템 사용방법(의료기관용)
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
헤드라인 헤드라인 헤드라인 헤드라인 헤드라인 헤드라인 헤드라인 헤드라인 헤드라인 헤드라인 헤드라인 헤드라인 텍스트 샘플 텍스트
입출력 CHAPTER 12 Section 1 java.io 패키지 개요 Section 2 파일과 디렉터리
포토서버 (PhotoServer) 제품 소개서
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
Voucher Platform Manual
자전거를 배우려면 안장에 올라가 페달을 밟아라.
Java의 정석 제 2 장 변수(Variable) Java 정석 남궁성 강의
칼빈의 생애와 개혁자로의 변모 사학과 김종식.
제 12장. 사용자 정의형으로서의 클래스 학기 프로그래밍언어및실습 (C++).
DataScience Lab. 박사과정 김희찬 (월)
제어문 & 반복문 C스터디 2주차.
국제의료관광 관련 법, 제도.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 09. C언어의 핵심! 함수!
Java의 정석 제 4 장 조건문과 반복문 Java 정석 남궁성 강의
Ⅳ. 컴퓨터와 생활 오 산 중 학 교.
자바 5.0 프로그래밍.
Chapter 12. String 클래스의 디자인
Java 3장. 자바의 기본 구조 I : 변수, 자료형, 연산자 public class SumTest {
-Part1- 제8장 조건문이란 무엇인가 (교재 199페이지 ~ 224페이지)
JVM의 구조와 메모리 모델 JVM의 내부 구조 클래스 파일 클래스 로더 메소드(method) 영역 힙(heap) 영역
CHAPTER 9-1 한국의 사회복지정책 - 사회보험제도 -
다문화 사회의 이해 배 상 훈 . 1. 한국사회의 다문화현상 2. 원인과 정책으로 살펴본 다문화 한국사회.
기술가정 2학년 2학기 4. 컴퓨터와 생활 >1) 소프트웨어의 활용 > 2~3/18 그림 자료는 어떻게 만들까?
Chapter 07 트리.
자료구조 강의소개 정성훈 연락처 : 이메일 : 연구실 : 연219호 연락처 : 이메일 : 홈페이지: 정성훈.
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
제 12 장 e-비즈니스 창업 1. 창업의 유형 2. 컴퓨터 통신의 개요 3. 창업관련제도.
argc, argv 의 사용방법 #include <stdio.h>
DataScience Lab. 박사과정 김희찬 (화)
Sunzio UCC Renewal Project
디자인 작업 작업 내용 1. 카드 앞면 : 시안 2종 – 나성범 선수 가지고
정리보관백 3종 + 보호커버 + 네임택 + 마그네틱
2019 캠퍼스 특허전략 유니버시아드 접수신청 방법.
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 02. C언어 기반의 C++ 2.
배너광고 제안서 Advertisement
배열.
경찰학 세미나 제 5 강 경찰관직무집행법 2조 5호의 의미 신라대학교 법경찰학부 김순석.
Presentation transcript:

Chapter 15 실전 프로젝트 01 친구 연락처 관리 프로그램 02 사진 처리 프로그램 예제 모음 요약 연습문제

지금까지 내용을 종합하여 2개의 프로젝트 수행하기

Section 01 친구 연락처 관리 프로그램(1) 프로그램의 개요 연락처를 파일에 저장, 필요할 때마다 꺼내서 보거나 삭제하는 연락처 관리 프로그램

Section 01 친구 연락처 관리 프로그램(2) 프로그램 구현 방법 친구의 연락처는 파일에 저장, 프로그램 종료해도 기록 남게 함 파일 처리 위해 FileReader, FileWriter, BufferedReader, BufferedWriter 클래스 사용. 연락처 출력, 입력, 삭제 기능은 별도의 메소드로 작성, 네 가지 중 하나 선택 메뉴 화면도 별도의 메소드로 작성. main( ) 메소드에서는 while 문을 사용 사용자가 종료 할 때까지 반복하는 기능 넣음 사용자의 입력에 따라 별도의 메소드 각각 호출. while 문, switch~case 문 사용.

Section 01 친구 연락처 관리 프로그램(3)

Section 01 친구 연락처 관리 프로그램(4) 프로그램 코딩 선언부 : 본격적인 메소드 프로그래밍 전, 전체 프로그램에서 필요한 클래스, 메소드 준비

Section 01 친구 연락처 관리 프로그램(5)

Section 01 친구 연락처 관리 프로그램(6) ❶ 1~31행 HandPhone 클래스 전체 범위로, 소스코드는 HandPhone.java가 되고 컴파일 결과는 HandPhone.class가 됨. ❷ 2행 사용자가 입력한 정보를 ‘c:\temp\juso.txt’ 파일에 저장하기 위해 파일명을 변수에 고정. ❸ 4~14행 연락처 클래스를 정의. 연락처는 이름, 나이, 전화번호로 구성, 필요시 주소, 이메일 등 추가 나이(age)를 문자열로 한 이유는, 단지 기록을 위한 것일 뿐 숫자로 다루는 과정이 없기 때문. ❹ 16, 17행 메인 메소드 구현. ❺ 19~29행 프로그램에서 사용될 4개의 메소드 준비. print_menu( ) 메소드는 초기의 메뉴 화면 출력, view_ juso( ) 메소드는 현재 저장된 c:\temp\juso.txt 파일에서 연락처 읽어 화면 출력. 또한 add_ juso( ) 메소드는 새로 입력하는 연락처를 c:\temp\juso.txt 파일에 저장, delete_ juso( ) 메소드는 사용자가 선택한 연락처를 파일에서 삭제.

Section 01 친구 연락처 관리 프로그램(7) main 메소드 : 사용자의 선택에 따라 해당 기능을 하는 각각의 메소드 호출

Section 01 친구 연락처 관리 프로그램(8)

Section 01 친구 연락처 관리 프로그램(9) ❶ 3행 사용자가 선택하는 번호 저장 위해 select 변수를 선언, 초깃값으로 “4”(종료)가 아닌 아무 값이나 넣음. 여기서는 “ ”를 넣었음. ❷ 6행 사용자가 입력한 값이 “4”가 아닌 동안에는 계속 반복. ❸ 7, 8행 7행에서는 사용자에게 보여줄 메뉴 출력, 8행에서는 사용자로부터 1~4의 입력 값 받음. ❹ 10~24행 사용자가 입력한 값에 따라 각각 다른 기능 하는 메소드 호출. 사용자가 4를 입력하면 21행의 return 문에 의해 프로그램 종료. 또한 사용자가 1~4 이외의 값을 입력하면 23행의 오류 메시지 출력 다시 6행으로 가서 처음부터 반복.

Section 01 친구 연락처 관리 프로그램(10) 초기 메뉴 출력 : 사용자가 무엇을 입력해야 할지 설명해주는 메뉴 출력 3~7행에서 사용자가 선택할 수 있는 메뉴를 화면에 도움말로 출력. 사용자는 이 메뉴 화면을 보고 원하는 기능 선택

Section 01 친구 연락처 관리 프로그램(11) 연락처 출력 : 사용자가 1번을 선택하면 연락처 파일에 입력된 내용 읽어와 출력

Section 01 친구 연락처 관리 프로그램(12)

Section 01 친구 연락처 관리 프로그램(13) ❶ 2행 파일 관련 예외 처리 위해 throws IOException 추가. ❷ 6~10행 6행에서 juso.txt 파일에 접근. 이 프로그램 처음 실행한다면 아직 juso.txt 파일 없으므로 8, 9행에서 비어 있는 파일 생성. 즉 쓰기용으로 잠깐 열었다가 닫으면 빈 파일 생성. ❸ 12, 29행 juso.txt 파일을 읽기용으로 열고 닫음. ❹ 16~24행 for 문에는 초깃값과 증가 값만 있을 뿐 조건식이 없으므로 무한 루프. 18행에서 파일의 끝 만나면(파일을 읽을 준비가 되지 않았으면) 무한 루프를 빠져나옴. 22행에서 연락처의 순번(i)과 내용 함께 출력. 이때 juso.txt 파일에 저장된 내용 하나도 없다면 i 값이 1인 상태로 for 문 빠져나옴. ❺ 26, 27행 i 값이 1이면 27행에서 전화번호가 하나도 없다는 메시지 출력. 이 내용은 없어도 되지만 사용자의 편의 위해 추가

Section 01 친구 연락처 관리 프로그램(14) 연락처 추가 : 사용자가 2번 선택하면 연락처 추가로 등록 가능

Section 01 친구 연락처 관리 프로그램(15)

Section 01 친구 연락처 관리 프로그램(16) ❶ 4행 주소를 입력받기 위한 adr 인스턴스 변수를 선언하고 모두 공백으로 초기화. ❷ 9행 추가(Append) 모드로 juso.txt 파일 열기. FileWriter(파일명, true) 형식으로 파일 열기. ❸ 11~16행 연락처 등록 위해 우선 인스턴스 변수(4행에서 선언)에 이름, 나이, 전화번호 각각 입력. ❹ 19행 입력된 값들을 모두 한 줄의 문자열(wstr)로 만듬. ❺ 21, 22행 wstr을 파일에 쓰고 한 행 넘김.

Section 01 친구 연락처 관리 프로그램(17) 연락처 삭제 사용자가 3번을 선택하면 기존의 연락처 삭제. 연락처를 삭제하기 위해 기존의 연락처를 juso.txt 파일에서 문자열 배열에 읽어오되 삭제를 지정한 행은 빼놓고 읽어오는 방법 사용. 그리고 새로 읽어들인 문자열 배열의 내용을 다시 juso.txt 파일에 쓰면 사용자가 지정한 행이 삭제되는 효과 나타남.

Section 01 친구 연락처 관리 프로그램(18)

Section 01 친구 연락처 관리 프로그램(19)

Section 01 친구 연락처 관리 프로그램(20) ❶ 5행 juso.txt 파일의 내용을 전부 읽어오기 위해 50행의 배열 선언. 이때 사용자의 최대 연락처 개수가 50개라고 가정. ❷ 12~15행 처음 프로그램을 실행하면 juso.txt 파일이 아직 존재하지 않음. 그런 상태에서 3번을 입력하여 연락처 삭제하면 삭제할 내용이 없어 파일이 없다는 메시지 출력하고 메소드 빠져나감. ❸ 17, 18행 사용자가 삭제하는 행의 번호를 del_line 변수에 입력.

Section 01 친구 연락처 관리 프로그램(21) ❹ 20~31행 반복해서(최대 50번) juso.txt 파일의 내용을 read_str 변수에 저장. 파일의 끝인 경우 readLine( )이 null을 반환하므로 for 문 빠져나옴. 22행에서 한 줄을 읽어 str 변수에 저장한 다음, 25행에서 읽어온 행(i가 0부터 시작하므로 i+1번째 행)이 사용자가 지정한 행(del_line)이 아니라면 read_str 배열에 정상적으로 저장, 만약 사용자가 지정한 행이라면 read_str 배열에 저장 않고 30행에서 행이 삭제되었다는 메시지만 출력. 또한 28행에서는 read_str 배열에 몇 개를 읽어왔는지 개수를 센다. 그리고 33행에서 읽기용으로 연 파일을 닫는다. 이렇게 되면 현재 read_str 배열에는 사용자가 입력한 행을 제외한 juso.txt의 모든 내용이 저장된 상태. ❺ 36행 다시 juso.txt를 쓰기용으로 열면 파일의 기존 내용 모두 사라짐. ❻ 38~41행 읽어들인 내용(read_str 배열)을 읽은 개수(count)만큼 juso.txt에 새로 기록. 그러면 사용자가 지정한 행을 제외한 내용이 juso.txt 파일에 새로 기록되므로 사용자가 지정한 행이 삭제되는 효과 나타남.

Section 01 친구 연락처 관리 프로그램(22) 전체 소스

Section 01 친구 연락처 관리 프로그램(23)

Section 01 친구 연락처 관리 프로그램(24)

Section 01 친구 연락처 관리 프로그램(25)

Section 01 친구 연락처 관리 프로그램(26)

Section 01 친구 연락처 관리 프로그램(27)

Section 01 친구 연락처 관리 프로그램(28)

Section 01 친구 연락처 관리 프로그램(29)

Section 01 친구 연락처 관리 프로그램(30)

Section 02 사진 처리 프로그램(1) 프로그램의 개요 주어진 사진 파일의 이미지 반전, 사진의 모양을 거울과 같이 반전시키는 기능 구현한 간단한 이미지 처리 프로그램. 또한 원본 사진과 처리 결과 사진을 화면에 출력 이 프로그램의 제약 사항 기존에 잘 알려진 이미지 파일이 아닌 간단한 8bit(1byte) 그레이(Gray) 이미지로, 5123512 픽셀 크기의 raw 파일만 처리. 프로그램에서 처리할 원본 사진 파일은 ‘c:\temp\prince.raw’로 고정, 변환이 완료되고 사용자가 저 장한 사진 파일의 이름은 ‘result.raw’로 고정. 일반적으로 이미지 파일은 jpg, png, bmp, gif 등의 확장자 사용. 이러한 이미지 파일은 구조가 복잡하여 코드에서 별도의 라이브러리 없이 사용하기 어려움. JAVA 코드에서 직접 조작하기 쉽도록 가장 단순한 사진 파일 포맷인 raw 파일 사용. 여기서 사용할 사진 파일인 *.raw는 5123512 픽셀 크기의 그레이 이미지. raw 파일은 가장 단순한 형식의 이미지 파일로, 별도의 헤더 정보 없이 각 픽셀이 바로 영상 값을 갖는 파일을 말함. raw 파일을 포토샵(또는 페인트샵)에서 읽으려면 사용자가 raw 파일의 픽셀 크 기를 미리 알고 있어야 함.

Section 02 사진 처리 프로그램(2) 이 프로그램의 실행 화면 [그림 15-3]. GUI를 적극 활용 완전한 윈도 응용 프로그램으로 메뉴도 작성해서 사용. 메뉴에 나와 있듯이 각 메뉴 선택하면 prince. raw 파일에 이미지 처리 진행되고, 결과의 저장 및 프로그램의 종료도 이루어짐. 처리한 결과는 c:\temp\result.raw 파일로 생성.

Section 02 사진 처리 프로그램(3)

Section 02 사진 처리 프로그램(4) 프로그램 구현 방법 이 프로그램에서 사용하는 prince.raw 파일의 구조 5123512의 이미지 파일에서 각각의 점(픽셀)은 0~255의 값 갖음. 0에 가까울수록 검은색에 가까운 회색이 되고, 255에 가까울수록 흰색에 가까운 회색이 됨.

Section 02 사진 처리 프로그램(5) 이 사진 파일을 네 가지 형태로 변환. 각각의 처리 방식을 메소드와 함께 살펴보자. 또한 사진 파일 처리 위해 사진 파일과 크기가 동일한 배열을 2개 선언. 프로그램을 통해 사진 파일을 처리하는 과정은 [그림 15-6]과 같다. [그림 15-6]을 잘 이해하면 프로그래밍이 그리 어렵지 않다. 먼저 loadImage( ) 메소드가 원본 사진 파일인 prince.raw를 5123512 메모리인 inImage 배열에 불러들인다. 그리고 그림에는 표현되지 않았지만 사용자가 처리할 방법을 [그림 15-3]과 같이 메뉴에서 선택. 선택한 메뉴에 따라영상 처리 메소드인 equal( ), negative( ), mirror1( ), mirror2( )가 작동. 각 메소드의 기능 equal( ) : inImage 배열의 내용을 동일하게 outImage에 넣음. negative( ) : inImage 배열의 값을 ‘255-원래 값’으로 만듬. 그러면 색상 반전. mirror1( ) : inImage 배열의 위치가 좌우 대칭이 되도록 outImage에 넣음. mirror2( ) : inImage 배열의 위치가 상하 대칭이 되도록 outImage에 넣음.

Section 02 사진 처리 프로그램(6) 메소드가 처리되면서 displayImage( )도 함께 실행되도록 함으로써 outImage 배열의 내용 화면에 출력하여 사용자가 눈으로 확인. 마지막으로 사용자가 메뉴의 [저장]을 선택하면 결과가 result.raw 파일로 저장되도록 처리

Section 02 사진 처리 프로그램(7) 프로그램 코딩 : 전체 틀 작성 이미지 배열을 선언하고 사진 파일을 배열에 불러오기 : loadImage() 본격적인 프로그래밍 전에 전체 프로그램에서 사용할 변수나 메소드 선언

Section 02 사진 처리 프로그램(8)

Section 02 사진 처리 프로그램(9) ❶ 2, 3행 입력과 출력 배열을 원본 사진과 동일한 512×512 크기로 설정. 각 이미지의 픽셀은 0~255의 값을 가지므로 데이터 형식을 int로 지정(short로 해도 됨). ❷ 5행 윈도 창을 출력할 컨테이너 변수 준비. ❸ 7~11행 메인 함수로 이미지 파일을 메모리로 불러오고 Photo( ) 생성자 실행. ❹ 13~31행 이미지 파일을 메모리로 불러옴. 18행에서 파일을 ‘c:\temp\prince.raw’로 고정. 24, 25행에서 이미지의 크기인 512×512번 반복하여 inImage 메모리로 파일 내용 불러옴. ❺ 33, 34행 생성자 메소드. 자세한 내용은 잠시 후에 살펴본다

Section 02 사진 처리 프로그램(10) 윈도 창 생성 및 이미지의 화면 출력

Section 02 사진 처리 프로그램(11)

Section 02 사진 처리 프로그램(12) ❶ 2~20행 생성자에서 메뉴 추가하고 윈도 창에 패널 부착. 3행에서는 윈도 창의 타이틀 표시, 4행에서 종료 버튼 누르면 프로그램 종료 위해 추가. 12행에서 DrawImage 타입의 panel 인스턴스 생성, 13행에서 윈도 창에 패널 부착. DrawImage 클래스는 23~36행에서 정의했는데 outImage의 내용을 화면에 출력하는 기능함. 16행에서 윈도 창의 위아래 틀, 메뉴나 제목의 크기까지 고려 크기 설정하고, 17행에서 화면에 나타나게 함. 19행에서는 윈도 창을 새로 고침하여 다시 화면에 출력 효과.

Section 02 사진 처리 프로그램(13) ❷ 23~36행 outImage 배열의 내용 화면 출력. 26행에서 R, G, B 변수 준비, 28~34행 에서 outImage의 픽셀 하나하나를 화면에 반복 출력. setColor( )는 화면에 출력 할 색상 설정, drawRect( )는 화면에 픽셀 출력 기능. 30행에서 R, G, B를 모두 같은 값으로 하면 그레이 색상 됨. ❸ 38~41행 outImage의 내용이 변경될 때마다 이 메소드 호출하여 화면에 변경된 내용 출력. ❹ 43~45행 사진을 처리할 메뉴 및 메뉴 선택할 때 발생하는 이벤트를 처리할 리스너 만듬

Section 02 사진 처리 프로그램(14)

Section 02 사진 처리 프로그램(15) 메뉴 생성 및 이벤트 리스너 추가 : 메뉴 추가, 메뉴 선택시 실행할 이벤트 리스너 생성

Section 02 사진 처리 프로그램(16)

Section 02 사진 처리 프로그램(17)

Section 02 사진 처리 프로그램(18) ❶ 1~62행 메뉴 추가하고, 각 메뉴를 선택했을 때 실행할 리스너 생성. ❷ 2~20행 2~5행에서는 ‘사진 처리’라는 상위 메뉴 만들고, 7~20행에서는 6개의 메뉴 준비. 14~20행에서는 6개의 메뉴를 상위 메뉴인 ‘사진 처리’ 메뉴에 부착. ❸ 23~61행 각 메뉴를 선택했을 때 처리할 리스너 각각 준비. 23~27행은 ‘동일한 사진’ 메뉴를 선택하면 처리되는 이벤트 리스너. 나머지도 같은 개념으로 반복. ❹ 64~77행 실제 사진을 처리할 메소드를 미리 준비.

Section 02 사진 처리 프로그램(19)

Section 02 사진 처리 프로그램(20) 프로그램 코딩 : 영상 처리 핵심 알고리즘 구현 영상 처리(이미지를 동일하게 처리) : equal() 입력 사진 배열(inImage)과 출력 사진 배열(outImage)를 동일하게 처리 [그림 15-9]는 5×5 픽셀이므로 5×5=25번을 반복. 여기서 처리할 prince.raw 이미지는 512×512 픽셀이므로 코드에서는 512×512=262144번을 반복

Section 02 사진 처리 프로그램(21) ❶ 3~5행 512×512번 반복하여 모든 픽셀 하나씩 처리. 5행에서 outImage에 inImage의 동일한 값 대입. 결국 inImage와 outImage는 [그림 15-9]와 동일. ❷ 7행 변경된 outImage를 다시 화면에 출력

Section 02 사진 처리 프로그램(22) 영상 처리(이미지의 반전 처리) : negative() 사진을 반전시키려면 이미지 값(0~255)을 거꾸로(255~0) 만든다. 즉 다음과 같이 값 바꿈 이를 구현하는 공식은 ‘반전된 색상=255-기존 색상’이다. 예를 들어 기존 값이 10이면 255- 10=245이므로 반전된 색상은 245

Section 02 사진 처리 프로그램(23) 그레이 이미지를 반전시키기 위해 5행에서 픽셀 값을 ‘255-원본 색상 값’으로 처리

Section 02 사진 처리 프로그램(24) 영상 처리(이미지를 좌우 대칭 처리) : mirror1() [그림 15-11]을 보면 0행 0열의 위치가 0행 4열로 변환. 그러므로 행은 원래의 행과 동일하고 열만 ‘전체 크기-1-현재 열’로 계산

Section 02 사진 처리 프로그램(25) 이미지를 좌우 대칭으로 변경하기 위해 5행에서 행(i)에 대한 것은 그대로 두고 열(k)에 대한 것을 ‘전체 크기-1-현재 열’의 위치로 이동. 이 이미지의 열 크기가 512이므로 변환될 outImage의 k 값은 원본 이미지 inImage의 ‘512-1-k’ 사용

Section 02 사진 처리 프로그램(26) 영상 처리(이미지를 상하 대칭 처리) : mirror2() [그림 15-12]를 보면 0행 0열의 위치가 4행 0열로 변환되었다. 그러므로 행은 ‘전체 크기-1-현재 행’으로 계산하고 열은 그대로 두면 된다

Section 02 사진 처리 프로그램(27) 이미지를 상하 대칭으로 변경하기 위해 5행에서 열(k)에 대한 것은 그대로 두고 행(i)에 대한 것을 ‘전체 크기-1-현재 행’의 위치로 이동. 이 이미지의 행 크기가 512이므로 변환될 outImage의 i 값은 원본 이미지 inImage의 ‘512-1-I’ 사용

Section 02 사진 처리 프로그램(28) 처리 결과 이미지 저장 : saveImage() [그림 15-6]을 보면 saveImage( ) 메소드는 출력 배열인 outImage의 내용을 파일에 저장

Section 02 사진 처리 프로그램(29)

Section 02 사진 처리 프로그램(30) ❶ 4행 저장되는 파일을 ‘c:\temp\result.raw’로 고정. ❷ 5~8행 저장할 파일의 스트림을 준비. ❸ 14~19행 메모리의 내용을 512×512번 파일에 쓴다. 결국 메모리의 내용이 모두 파일로 저장. ❹ 20, 21행 파일을 닫고 파일이 저장되었다는 메시지 출력

Section 02 사진 처리 프로그램(31) 전체소스

Section 02 사진 처리 프로그램(32)

Section 02 사진 처리 프로그램(33)

Section 02 사진 처리 프로그램(34)

Section 02 사진 처리 프로그램(35)

Section 02 사진 처리 프로그램(36)

Section 02 사진 처리 프로그램(37)

Section 02 사진 처리 프로그램(38)

Section 02 사진 처리 프로그램(39)

Section 02 사진 처리 프로그램(40)

Section 02 사진 처리 프로그램(41)

Section 02 사진 처리 프로그램(42)