Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ opencv imencode()缓冲区异常_C++_Opencv - Fatal编程技术网

C++ opencv imencode()缓冲区异常

C++ opencv imencode()缓冲区异常,c++,opencv,C++,Opencv,我使用这些代码将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::

我使用这些代码将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);
cv::threshold(图像,图像,100255,cv::THRESH_BINARY+cv::THRESH_OTSU);
std::载体buf;
imencode(“.jpg”,图像,buf);

解决此问题的一些机会:

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


更新opencv 3.2的好主意

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

std::向量缓冲区;
#定义MB 1024*1024
缓冲区大小(200*MB);
cv::imencode(“.png”,图像,缓冲区);

确保
image
8U
16U
,具有1个或3个通道。Thnaks,你解决了我的一天:对我来说,问题出在摧毁其他地方的向量,而调整大小解决了它!
std::vector<uchar> buffer;
#define MB 1024*1024
buffer.resize(200* MB);
cv::imencode(".png", image, buffer);