opencv imencode() buffer exception

opencv imencode() buffer exception

本文关键字:buffer exception imencode opencv      更新时间:2023-10-16

我使用这些代码将Mat图像编码为.jpg格式。它正在处理小图像,但是当我放置大图像时,项目会给出例外

在 0x76377fb2 (ucrtbase.dll) 中未处理的异常 图像识别.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);

在调用 imencode() 之前尝试保留内存:

std::vector<uchar> buffer;
#define MB 1024*1024
buffer.resize(200* MB);
cv::imencode(".png", image, buffer);

解决这个问题的一些机会:

尝试在调用std::vector<uchar> buf(50000);之前分配缓冲区我使用了这个解决方案,它对我有用。我会尽快将我的opencv版本升级到3.2

更新到 OpenCV 3.2 的好主意