我在从 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/