1
2
3
4
5
6
7
8
HANDLE pMem = (HANDLE)GlobalLock(hPicture);    //hPicture은 전달받은 jpeg 이미지 파일 핸들
 
//가져온 메모리 주소를 이용하여 jpeg 디코딩
Mat encodedData = Mat(1280960, CV_16UC3, pMem);    //1280*960사이즈의 이미지 파일
Mat decodedImage = imdecode(encodedData, IMREAD_COLOR);
 
//성공
imshow("decode", decodedImage);
cs


이미지 파일을 jpeg 형태로 전달해주는 핸들을 가지고 작업을 해야했다.

jpeg 자체는 코드내에서 처리하지 못하므로 비트맵으로 변환해주어야 했다.

jpeg->bmp로 변환해주기 위해 디코딩함


openCV의 imdecode 함수를 사용했음



http://blog.iwanhae.ga/introduction-to-opencv/


Mat에 대한 정말 기본적인 정리글 + 필터


CV_<비트수>(S|U|F)C<채널 개수>


8-bit unsigned integer (uchar) : CV_8U

8-bit signed integer (schar) : CV_8S

16-bit unsigned integer (ushort) : CV_16U

16-bit signed integer (short) : CV_16S

32-bit signed integer (int) : CV_32S

32-bit floating-point number (float) : CV_32F

64-bit floating-point number (double) : CV_64F


ex) CV_32FC1 - 32비트 실수형 1채

[작업환경]

openCV버전 : openCV 2.4.10

VS 버전 : vs2010

Debug ver.


[openCV 설치 방법]

1. openCV 다운로드

2.4.10 버전으로 다운로드

http://opencv.org/downloads.html


2. 환경변수 설정

1) 시스템 변수 -> 새로 만들기

변수 이름 : OPENCV_2_4_10_BUILD

변수 값 : D:\Program Files (x86)\openCV_2.4.10 (CV 설치한 경로) \opencv\build


2) 시스템 변수 -> 새로 만들기

변수 이름 : OPENCV_X86

변수 값 : %OPENCV_2_4_10_BUILD%\x86\vc10\bin


3) 시스템 변수 -> 새로 만들기

변수 이름 : OPENCV_X64

변수 값 : %OPENCV_2_4_10_BUILD%\x64\vc10\bin


4) 시스템 변수 -> path

맨 뒤에 ;%OPENCV_X86%;%OPENCV_X64%; 추가


5) 재부팅


3. VS 2010 설정

1) 구성 속성 -> C/C++ -> 일반 -> 추가 포함 디렉터리

$(OPENCV_2_4_10_BUILD)\include


2) 링커 -> 일반 -> 추가 라이브러리 디렉터리

$(OPENCV_2_4_10_BUILD)\x86\vc10\lib


3) 링커 -> 입력 -> 추가 종속성

opencv_calib3d2410d.lib

opencv_contrib2410d.lib

opencv_core2410d.lib

opencv_features2d2410d.lib

opencv_flann2410d.lib

opencv_gpu2410d.lib

opencv_highgui2410d.lib

opencv_imgproc2410d.lib

opencv_legacy2410d.lib

opencv_ml2410d.lib

opencv_nonfree2410d.lib

opencv_objdetect2410d.lib

opencv_ocl2410d.lib

opencv_photo2410d.lib

opencv_stitching2410d.lib

opencv_superres2410d.lib

opencv_ts2410d.lib

opencv_video2410d.lib

opencv_videostab2410d.lib




파일이나 폴더 불러오기 할 때

img = cv::imread("D:\image\Koala.jpg", CV_LOAD_IMAGE_COLOR); 로 경로에 \ 하나만 쓰면 불러오지 못하고 경고를 뱉어낸다.


경로에 \를 두개 써주면 해결됨!

img = cv::imread("D:\\image\\Koala.jpg", CV_LOAD_IMAGE_COLOR);


\\ 두번을 해줘야 출력이 \ 하나로 나오니까!

+ Recent posts