我正在使用这些代码将Mat图像编码为.jpg格式。它正在处理小图像,但是当我放置一个大图像时,项目会给出异常
0x76377fb2(ucrtbase.dll)中的未处理异常 ImageRecognition.exe:0xC0000409:0xc0000409。
我在Visual Studio 2015中使用opencv2.4.12,而我的操作系统是Windows 10,这是我的代码块。
cv::threshold(image, image, 100, 255, cv::THRESH_BINARY + cv::THRESH_OTSU);
std::vector<uchar> buf;
imencode(".jpg", image, buf);
答案 0 :(得分:1)
解决此问题的一些机会:
尝试在调用std :: vector buf(50000)之前分配缓冲区; 我用这个解决方案它对我有用。我会尽快将我的opencv版本升级到3.2
好主意更新到opencv 3.2
答案 1 :(得分:1)
在调用imencode()之前尝试保留内存:
std::vector<uchar> buffer;
#define MB 1024*1024
buffer.resize(200* MB);
cv::imencode(".png", image, buffer);