首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >调试断言在opencv加密期间失败

调试断言在opencv加密期间失败
EN

Stack Overflow用户
提问于 2016-06-28 08:58:12
回答 3查看 1.4K关注 0票数 1

我试图使用opencv (2.4.10)的imencode函数将bmp图像编码为jpg,使用下面的代码。

代码语言:javascript
运行
复制
void test()
{
    cv::Mat img = cv::imread("C:\\Users\\Maruf\\Pictures\\bingo.bmp", CV_LOAD_IMAGE_COLOR);
    cv::vector<uchar> buf;
    cv::imencode(".jpg", img, buf); 
    return;
}

return语句中,引发以下异常。

为什么会发生这种情况,我如何解决这个问题?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-06-28 10:18:44

我很确定这个问题可能是使用交叉msvc版本的原因。例如,您正在使用visual studio 10构建代码,并使用msvc 11或msvc 12的opencv dll & lib路径。大多数情况下,在环境路径中添加opencv目录时会发生这种情况。在使用visual 10和使用opencv vc11文件夹作为lib & dll路径的情况下,我发现了类似的blob检测问题。在将其更改为vc10之后,它工作得非常完美。

如果您在环境路径中添加了opencv,请更改它并重新启动您的visual。此外,您还需要对项目的lib路径进行相应的更改。

票数 2
EN

Stack Overflow用户

发布于 2016-06-28 09:24:14

尝试将cv::vector<uchar> buf;更改为std::vector<uchar> buf;。名称空间cv没有vector对象。

票数 0
EN

Stack Overflow用户

发布于 2017-08-12 08:52:42

由于opencv链接为动态库,您需要确保在相同的堆地址空间中分配和释放内存。

buf -在cv::imencode中分配内存(在opencv中),但在超出作用域时释放(在其他堆空间中)

例如,在您的示例中,您需要在将向量容器放入opencv函数cv::Mat img = cv::imread("C:\Users\Maruf\Pictures\bingo.bmp", CV_LOAD_IMAGE_COLOR); //for instance allocate 10Mb. std::vector buf(10 * 1024 * 1024); cv::imencode(".jpg", img, buf);之前分配内存。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38071558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档