OpenCV 에서 imencode 사용했던 메모리 버퍼 파일 쓰기하면 깨지는 문제 해결하기

메모리에 저장했다가 제대로 되는지 테스트 겸 파일로 저장해보니 이런 이미지가 나오더라
그래서 뭐가 문제이지 삽질하다가 해결함

static int cntttt =0;
cntttt++;
sprintf (TextBuffer, "d:\\image%d.jpg", cntttt);
{
	std::vector<int> qualityType;
	qualityType.push_back(CV_IMWRITE_JPEG_QUALITY);
	qualityType.push_back(90);
	cv::imencode(".jpg", imageROI, m_imbuf, qualityType);
	FILE* fp = NULL;
	fopen_s(&fp, TextBuffer, "w");
	fwrite(&m_imbuf[0],m_imbuf.size(),1,fp);
	fclose(fp);
}

여기 fopen부분에서 모드를 w가 아니라 wb로 해야 함.
바이너리 모드로 저장해야지만 정상 저장이 됨.

댓글 달기

이메일 주소는 공개되지 않습니다.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.