2

我在 Cent OS 机器上使用 OpenCV 2.4.4。我的代码当前加载带有警告的图像:组件数据类型不匹配

这是代码:

#include <cv.h>
#include <highgui.h>
#include "imglib.h"

int main( int argc, char** argv )
{
    Mat image = imread( argv[1], CV_LOAD_IMAGE_ANYDEPTH);
    imwrite("debugwriteout.jp2", image);
}

我在 args 中传递了一个 .jp2 灰度文件的名称。该图像具有 14 位像素深度,但是当我打印出像素值时,我得到的值超过 20000,并且我的图像现在是一个完全黑色的正方形。任何意见,将不胜感激。

附加信息:当我将 imread 标志更改为 CV_LOAD_IMAGE_GRAYSCALE 时,它成功地将图像转换为 8 位像素深度并打印有用的输出,因此我可以判断 jasper 模块至少在某种程度上正确地工作。

任何意见,将不胜感激,

谢谢

4

2 回答 2

1

思曼,

我解决了我的问题。解决方案是高位的位置。在 16 位上,对于 14 位深度,您有 xxxxxxxxxxxxxx00 而不是 00xxxxxxxxxxxxxx。如果你想要正确的值,你必须在右边贴上 2 位。

于 2013-04-29T23:58:08.373 回答
0

请使用这些标志阅读图像

Mat image = imread( argv[1], CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);
于 2013-03-15T18:42:47.073 回答