数组转Mat遇到的小问题

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对应

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值