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


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

댓글 남기기

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

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