C++ + OpenCV = 读取位置 0x02176000 访问冲突

2024-01-09

这段代码实际上以前一直有效。我现在不知道是什么导致它抛出错误(我实际上不记得对代码进行过任何更改)。如下(它从文件读取图像到 OpenCV IplImage 对象,然后将其转换为 jpeg 缓冲区):

  IplImage* fIplImageHeader = cvLoadImage( filePath.c_str() );

  vector<int> p;
  p.push_back( CV_IMWRITE_JPEG_QUALITY );
  p.push_back( 75 ); // JPG quality
  vector<unsigned char> buf;
  cv::imencode( ".jpg", fIplImageHeader, buf, p ); // this line gives error

完整的错误是:

Unhandled exception at 0x638fee22 in Client.exe: 0xC0000005: Access violation reading location 0x02176000.

fIplImageHeader 包含一个有效的图像,我可以使用以下方法确认:

cvShowImage( "Window", fIplImageHeader );

EDIT:

更长的片段:

while ( l < 30 )
{
            // path to image
    std::stringstream sstm;
    string filePath;
    sstm << workingDirectory << "/temp/" << k << ".jpg";
    filePath = sstm.str();

    cout << filePath.c_str() << endl;

    // load image to IplImage
    IplImage* fIplImageHeader = cvLoadImage( filePath.c_str() );

    // convert to JPG
    vector<int> p;
    p.push_back( CV_IMWRITE_JPEG_QUALITY );
    p.push_back( 75 ); // JPG quality
    vector<unsigned char> buf;
    cv::imencode( ".jpg", fIplImageHeader, buf, p );

            // do stuff

    k++;
    l++;
    if (10 == k)
    {
        k = 0;
    }

    char key = cvWaitKey( 1000/30 );

    cvReleaseImage( &fIplImageHeader );
}

输出缓冲区应该调整为输出图像的大小,但您尚未使用buf目的。至少您引用的文档页面提到了这一点http://opencv.willowgarage.com/documentation/cpp/reading_and_writing_images_and_video.html http://opencv.willowgarage.com/documentation/cpp/reading_and_writing_images_and_video.html

您可以尝试设置明确的尺寸吗buf?现在在您的代码示例中,它只是一个空向量。

编辑:是的,我认为你是对的,如果我在文档页面上再看一些,这似乎表明cv::imencode将进行分配,因此您不必这样做。如果这是真的,那么您的输入图像是否真的很大,是否内存不足?您还可以进入调试版本吗cv::imencode?

编辑:此页面还有另一个代码示例http://opencv.willowgarage.com/documentation/cpp/core_basic_structurals.html#Mat http://opencv.willowgarage.com/documentation/cpp/core_basic_structures.html#Mat

IplImage* img = cvLoadImage("greatwave.jpg", 1);
Mat mtx(img); // convert IplImage* -> cv::Mat

您还可以尝试“转换为 cv::Mat”步骤,并将其传递到cv::imencode?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ + OpenCV = 读取位置 0x02176000 访问冲突 的相关文章

随机推荐

  • 元素中插入

    我喜欢 p Variable Text p 我希望它是 p Variable span Text span p 这可以通过 JavaScript 函数实现吗 或 jQuery 哦 是的 p 元素有一个 ID p 元素内的文本是可变的 但始终
  • 打嗝不起作用:FileNotFoundException:无法在类路径上找到 ../as__init.class 或 ../as.clj

    我刚刚开始使用 clojure 我正在尝试构建一个小型网络应用程序 我想尝试打嗝 但似乎不起作用 我的代码如下 项目 clj defproject WebTest 0 1 0 SNAPSHOT description FIXME write
  • Django SECRET_KEY 是每个实例还是每个应用程序?

    这个问题 https stackoverflow com questions 7382149 purpose of django setting secret key 47117966 noredirect 1 comment9026458
  • 从 selectKbest 获取特征名称

    我使用 Scikit 学习selectKbest从 900 个特征中选择大约 500 个最佳特征 如下 其中 d 是所有特征的数据框 from sklearn feature selection import SelectKBest chi
  • 如何更改小型转储中模块的校验和?

    我编写 和销售 的软件在分发之前经过压缩和加密 每次发布新版本时 我都会在压缩和加密之前保留所有 map 文件和生成的二进制文件 包括 exe 当它在客户端计算机上崩溃时 我会得到一个小型转储 我在 Visual Studio 中打开这些小
  • Matplotlib窗口出现在后面?

    每当我打电话show 在 matplotlib 中 绘图窗口出现在所有其他窗口后面 我必须最小化所有内容才能看到它 有什么方法可以阻止这种情况或以编程方式将其带到前台 在 OSX Lion 上 Python 2 7 出色地 这个答案是在已接
  • ifelse 命令中的多个 true 条件

    在R中我们使用ifelse 测试 是 否 命令 我面临的问题是 如果协调结果为真 我需要执行各种声明 例如 ifelse fp 月 1 fp sum sales 1 fp sum sales 2 0 所以我给出两个条件 if fp mont
  • 为什么我的 Django 表单一直显示“此字段为必填字段”

    有谁知道为什么我的表单 文件选择器 在更简单的版本中工作时不断返回 此字段是必需的 我的看法是 def add attempt request m id a id template loader get template add attem
  • 在 C++ 中将 pytorch 张量转换为 opencv mat,反之亦然

    我想在 C 中将 pytorch 张量转换为 opencv mat 反之亦然 我有这两个功能 cv Mat TensorToCVMat torch Tensor tensor std cout lt lt converting tensor
  • 我可以在 C 程序中使用 C++ 库吗?

    我正在用 C 编写一个程序 但我想使用像向量一样的动态库 是否可以在 C 程序中使用 C 库 Not std vector 不 任何模板化的东西都是正确的 一般来说 使用 C 代码并不有趣 但这是可以做到的 您必须将类包装在 C 代码可以调
  • Assembly.LoadFrom 和依赖项

    我一直在尝试使用 Assembly LoadFrom 设置一个插件系统 该系统动态加载 exe 目录的子文件夹中的 dll 我有一个由 exe 和插件引用的接口库 构建完成后 我将插件 dll 复制到子文件夹中 不同的插件可能有共同的库 所
  • Android 可绘制语音气泡

    我已经找了好几天了 但找不到任何关于如何绘制气泡或在哪里绘制 9 个补丁图像用作背景的好线索 我是一个糟糕的艺术家 有人可以帮忙吗 我找到的最好的示例位于 Stack Overflow 上 但它是用 Objective C 编写的 如何在i
  • Java 方法引用抛出 NPE

    于是我就上了一堂课 public class MenuBar extends JMenuBar MenuBarController controller public MenuBar JMenu menu new JMenu File me
  • Google Analytics 跟踪代码给出 CORS 错误

    我正在使用 在我看来 昨天从我的帐户获得的新 Google Analytics 跟踪代码 它使用了一些 全局站点标签 我已按照 GA 的指示将其放置在我的 顶部 但在加载页面时遇到跨源错误 因此 GA 无法正确跟踪我的网站 这是确切的消息
  • django Rest 框架中的 django_countries

    我正在尝试创建一个 API 它可以使用 django countries 返回所有国家 地区 我正在尝试以下操作 但它不起作用 作为一个单独的字段 它工作正常 但对于完整的国家 地区列表 它会给出错误 from django countri
  • 我们可以在 noexcept 规范中引用成员变量吗?

    请考虑以下代码片段 template
  • 如何使用 Spring Boot 将日志消息写入文件?

    我想将消息记录在文件中而不是控制台上 我使用的是Spring Boot 我的配置如下 应用程序属性 logging level DEBUG logging level ERROR logging file HOME application
  • JS/Firebase - messages.onBackgroundMessage 不是函数

    这是我的整个代码 import initializeApp from https www gstatic com firebasejs 9 16 0 firebase app js import getMessaging getToken
  • 在 Kubernetes 中您应该使用 PM2、节点集群还是两者都不使用?

    我正在将一些 NodeJS 代码部署到 Kubernetes 中 过去 您需要运行 PM2 或 NodeJS 集群模块才能充分利用多核硬件 现在我们有了 Kubernetes 目前尚不清楚是否必须使用其中之一才能充分发挥多核的优势 如果一个
  • C++ + OpenCV = 读取位置 0x02176000 访问冲突

    这段代码实际上以前一直有效 我现在不知道是什么导致它抛出错误 我实际上不记得对代码进行过任何更改 如下 它从文件读取图像到 OpenCV IplImage 对象 然后将其转换为 jpeg 缓冲区 IplImage fIplImageHead