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

현재 페이지를 로딩중입니다.
만약 페이지 로딩이 끝났는데 본문이 보이지 않는다면
광고차단 플러그인 때문이니 잠시 플러그인을 꺼주시면 감사하겠습니다.

The current page is loading.
If the page loading is over but the text is not visible
This is because of the ad blocking plugin, so please be sure to turn off the plugin for a while.

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

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로 해야 함.
바이너리 모드로 저장해야지만 정상 저장이 됨.

크리에이티브 커먼즈 라이선스 Linsoo의 저작물인 이 저작물은(는)크리에이티브 커먼즈 저작자표시-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.

댓글 남기기

이메일은 공개되지 않습니다.

This site uses Akismet to reduce spam. Learn how your comment data is processed.