Library/OpenCV

OpenCV] 이미지 반전 시키기

TwinParadox 2018. 3. 15. 22:57
728x90

OpenCV에는 cvNot이라는 이미지 반전 시키는 함수가 있어서 이번에도 친구가 보내준 아이유 사진을 반전시켜봤다. 인물 사진을 반전시키는 건 확실히... 좀 그렇다.



cvNot(const CvArr *src, const CvArr *dst)



src는 변환하고자 하는 이미지를, dst는 변환한 이미지를 저장할 곳으로 사용한다. 유의할 점이 두 가지 정도 있다.


1. 함수에 이미지를 Mat이 아닌 IplImage로 다루어야 한다.

2. dst로 받을 IplImage는 nullptr로 비워두는 것이 아니라 cvCreateImage()로 적절하게 할당해줘야 한다.



원본




결과




소스코드

#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main(void)
{
	Mat srcImage = imread("IU.jpg");
	Mat destImage;

	IplImage *src = new IplImage(srcImage);
	IplImage *dest = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, 3);

	cvNot(src, dest);

	destImage = cvarrToMat(dest);
	imwrite("invertIU.jpg", destImage);

	cvNamedWindow("Original", CV_WINDOW_AUTOSIZE);
	cvNamedWindow("Result", CV_WINDOW_AUTOSIZE);
	imshow("Original", srcImage);
	imshow("Result", destImage);
	waitKey(0);
	return 0;
}


728x90