int b ={9558 , 3469 ,3114 ,1418, 577 , 340 , 106 ,186};
Mat B(8,1,CV_16SC1,b);
结果 B= [9558 ,0, 3469 ,0 ,3114 ,0,1418,0];
不是预期的 【9558 , 3469 ,3114 ,1418, 577 , 340 , 106 ,186】
问题产生原因及解决方法:
主要看你的数组b是什么数据类型,如果你的数组b是int类型的,int四个字节 32位,你的CV_16S是16位的,Mat B(8,1,CV_16SC1,b); 一共8行, 32/16 =2 , 所以你的b数组转到Mat ,两行代表原数组的一位, 如果设置设置成Mat B(16,1,CV_16SC1,b); 结果就是 B = [9558 , 0,3469 ,0 ,3114 ,0 ,1418,0, 577 ,0, 340 ,0, 106 ,0 ,186,0] , 要么就把数组定义成short int 类型 与CV_16S对应,要么就把CV_16S改成CV_32S与int对应