error: OpenCV(4.8.0) :-1: error: (-5:Bad argument) in function ‘line‘

error: OpenCV(4.8.0) :-1: error: (-5:Bad argument) in function 'line' > Overload resolution failed: > - Layout of the output array img is incompatible with cv::Mat > - Expected Ptr<cv::UMat> for argument 'img'

在python中读取matlab保存的mat文件,然后进行一些处理出现上面报错。
此原因可能由于 matlab和python存储方式不同。

Pascal, C,C++,Python都是行优先存储的,而Fortran,MatLab是列优先存储的。

C order 以及 Fortran order

  • C order 指的是行优先的顺序(Row-major Order),即内存中同行的元素存在一起,
  • Fortran Order则指的是列优先的顺序(Column-major Order),即内存中同列的元素存在一起。

解决方法:在python中使用函数:
 

np.ascontiguousarray()

使得数组转化为C-order存储即可。

参考:
numpy中的np.ascontiguousarray()函数 - 知乎 (zhihu.com)

 若保存的mat文件为RGB图片,当使用mediapipe在本图片上进行提取手部关节点时候,可能会发现左右手识别反转,需要对图片进行水平翻转cv2.flip(),最好先水平翻转再转化为c coder格式排列,即将cv2.flip(),函数放在np.ascontiguousarray()函数前。若将cv2.flip()函数放在np.ascontiguousarray()函数之后会发现没有任何作用,左右手依然识别错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值