opencv - 使用 cvMat 编写 cvGetImage 时出现问题

标签 opencv

我在从 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);//其中标签的类型是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 您也可以尝试使用任何其他视频。

提前致谢, 考希克

最佳答案

我明白为什么我会收到错误。我正在倾倒正在压缩的 .jpg 图像。当我使用 .png 时解决了这个问题

关于opencv - 使用 cvMat 编写 cvGetImage 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5203007/

相关文章:

C 和 OpenCV 内存泄漏

python - 使用 Python openCV PIL 将黑色更改为白色但不将白色更改为黑色

python - OpenCV 从源 Windows 生成错误 "RC Object"

android - 如何检测最大矩形轮廓内的标记黑色区域?

python - 图像的 NumPy 切片

python - 无法识别数字 5

c++ - 如何用指针分配一个文件名?

python - 在固定 block 中分割图像

python - 尝试调整由matplotlib.pyplot打印出的图像的大小

c++ - cpp 中基于 FFT 的图像配准(可选地使用 OpenCV)?