我在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模块至少在某种程度上正常工作。
任何建议都将不胜感激,
由于
答案 0 :(得分:1)
SZman,
我解决了我的问题。 解决方案是高位的位置。 在16位上,对于14位深度,您有xxxxxxxxxxxxxx00而不是00xxxxxxxxxxxxxx。 如果你想要正确的值,你必须在右边贴2位。
答案 1 :(得分:0)
请使用这些标志阅读图像
Mat image = imread( argv[1], CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);