2013-03-15 23 views
2

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

这里是代码:

#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位像素深度和印刷品有用的输出,所以我可以告诉碧玉模块工作至少在某种程度上正确。

任何意见,将不胜感激,

感谢

回答

1

SZman,

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

0

使用这些标志

Mat image = imread(argv[1], CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR); 
+0

我加了标志,没有改变。 – SZman 2013-03-15 19:29:57

+0

以16位格式化输入图像,然后重试。 – William 2013-04-29 07:15:15