【问题标题】:issue while writing cvGetImage using cvMat使用 cvMat 编写 cvGetImage 时出现问题
【发布时间】:2023-04-11 12:25:01
【问题描述】:

我在从 cvMat 写入图像时遇到问题。

这就是我所做的。

IplImage* low_threshold_mask = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 1);
CvMat* labelMat = cvCreateMat(low_threshold_mask->height,low_threshold_mask->width,CV_32F);

/* 我在函数中填充 labelMat 的元素。它是这样完成的: cvmSet(labelMat,r,c,label); // 其中 label 的类型是 long */

为了检查值,我将每个像素值转储到文本文件中并转储图像。

IplImage* labelImg;
IplImage imageHeader;
labelImg = cvGetImage(labelMat, &imageHeader);

现在,当我将像素强度与转储文本文件中的相应值进行交叉检查时,我发现不匹配。我觉得我在文本文件中得到了正确的值,但在图像中得到了错误的值。

谁能帮忙找出错误?


----------新增功能-------

我仍然面临这个问题。我已经上传了我的programs。我将解释我究竟在哪里面临错误。

使用:与 openCV 一起,我正在使用 disjoint_sets 的 boost 库。

基本上我在做连接组件标签。 出于调试目的,对于第 20 帧,我已将每个像素的标签信息转储到 a)文本文件以及 b)强度级别与像素的最终标签相同的图像。所以我期望文本和图像中的值相同。但这并没有发生。我无法弄清楚为什么。文本文件显示正确的值,但不显示图像。我在 Matlab 中检查图像的像素值(我已经处理了 matlab 中的索引以 1 而不是 0 开头)。

我的文本文件 a) (frame20final.txt) 被填充到 GrimsonGMM.cpp/ConCompLabeling() 中。 b) (frame20image.txt) 被填充到 main.cpp 我的转储图像(frame-ccs.jpg)被填充到 main.cpp 中。

两个文本文件的值相同。 所以从 CvMat 中写入图像一定有一些错误。

测试视频:person15_walking_d1_uncomp.avi 您也可以尝试使用任何其他视频。

提前致谢, 考希克

【问题讨论】:

  • 请允许我欢迎您来到 StackOverflow,并提醒我们通常在这里做的三件事:1) 当您获得帮助时,请尝试在您的专业领域中回答问题 2) Read the FAQs 3) 当你看到好的问答时,给他们投票using the gray triangles,因为系统的可信度是基于用户通过分享他们的知识而获得的声誉。还记得接受更好地解决您的问题的答案,如果有的话,by pressing the checkmark sign

标签: opencv


【解决方案1】:

我明白为什么会出现错误。我正在转储正在压缩的 .jpg 图像。这在我使用 .png 时得到了解决

【讨论】:

    【解决方案2】:

    你的问题很简单。

    您想使用 CvMat,并且在使用 CvMat 进行操作之后,您希望像绘制图像一样绘制 CvMat。

    你必须创建imageHeader,像这样。

    CvMat* mat = cvCreateMatHeader(rows, cols, type);
    mat->step = 4 * (mat->cols * CV_ELEM_SIZE1(mat->type) * CV_MAT_CN(mat->type) / 4 + 1);//critical
    cvCreateData(mat);
    

    在 OpenCV 2.0 及以下 C++ 接口中,实际上没有必要从 Mat 更改为 IplImage。

    您可以使用cvShowImage 绘制图像,如果您想转换为IplImage 只需做一个简单的演员 IplImage *img = labelMat;

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-09
    • 2020-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    相关资源
    最近更新 更多