我需要将Mat 8UC1 [0,255]的值替换为cv :: Mat lookUpTable(1,256,CV_16UC1)的值;我检查这个OpenCV tutorial是一种解释,这是最快的方法,但是,当我在每个位置检查LUT的指定值时,我只能读取8位,因此我会丢失其他8位。这是源代码:
unsigned short int zDTableHexa[256]={0};
.... get the values...
cv::Mat lookUpTable(1, 256, CV_16UC1);
uchar* p = lookUpTable.data;
for( int i = 0; i < 256; i++){
p[i] = zDTableHexa[i];
cout<<(int)p[i]<<":"<<zDTableHexa[i]<<sizeof(p[i])<<":"<<sizeof(zDTableHexa[i])<<endl;
}
打印结果如下:
104:872个
101:869个
97:865个
93:861个
90:858个
86:854个
83:851个
80:848个
76:844个
73:841个
70:838个
66:834个
63:831
当我签入二进制文件时,只有前8位。 我知道指针是UCHAR(8位),但我如何分配完整的值?
答案 0 :(得分:1)
试
unsigned short* p = (unsigned short*) lookUpTable.data;
答案 1 :(得分:0)