이미지의 Channel에 따라서 if문을 사용유무를 결정하면 된다.
그리고 이미지 단순 회전은 cv2DRotationMatrix 함수에서
90-degree → degree로 변환하면 된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | void rotateImage(const IplImage* src, IplImage* dst, double degree) { // Only 1-Channel if(src->nChannels != 1) return; CvPoint2D32f centralPoint = cvPoint2D32f(src->width/2, src->height/2); // 회전 기준점 설정(이미지의 중심점) CvMat* rotationMatrix = cvCreateMat(2, 3, CV_32FC1); // 회전 기준 행렬 // Rotation 기준 행렬 연산 및 저장(90도에서 기울어진 각도를 빼야 본래이미지(필요시 수정)) cv2DRotationMatrix(centralPoint, 90-degree, 1, rotationMatrix); // Image Rotation cvWarpAffine(src, dst, rotationMatrix, CV_INTER_LINEAR + CV_WARP_FILL_OUTLIERS); // Memory 해제 cvReleaseMat(&rotationMatrix); } |
함수호출방법
1 | rotateImage(src, dst, degree); |
728x90
반응형
'Programming > Image Processing' 카테고리의 다른 글
[OpenCV] 가장 긴 직선의 각도를 반환하는 함수(소스코드) (0) | 2014.02.21 |
---|---|
[OpenCV] 이미지 로드 + 출력예제 소스코드 (0) | 2014.02.08 |
[OpenCV] Labeling 응용(가장 많은 화소 Label만 남기기) Source Code (0) | 2014.02.02 |
[OpenCV] 2.4 이상 버전에서 SIFT + SURF 사용 설정 (3) | 2014.01.27 |
[OpenCV] Labeling(레이블링, 라벨링) 이론 및 소스코드 (3) | 2014.01.14 |