我尝试使用LibRaw读取NEF文件,然后将它放在cv :: Mat中。该NEF文件将数据存储为12位,这意味着我需要16位,因此我应该使用CV_16UC4这样的:为什么cv :: Mat :: data总是指向一个uchar?
Mat img1(height, width, CV_16UC4);
Libraw存储数据与ushort * [4],所以我认为这应该工作:
for (i = 0; i < iwidth*height; i++) {
img1.data[4*i+1] = Processor.imgdata.image[i][0];
img1.data[4*i+2] = Processor.imgdata.image[i][1];
img1.data[4*i+3] = Processor.imgdata.image[i][2];
img1.data[4*i+4] = Processor.imgdata.image[i][3];
}
我也得到一个生成错误的数据可能会丢失,因为一个USHORT到UCHAR转换会发生,这是有道理的,不过,我怎么把数据比数据UCHAR更大?