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)文章来源:https://www.toymoban.com/news/detail-756408.html
若保存的mat文件为RGB图片,当使用mediapipe在本图片上进行提取手部关节点时候,可能会发现左右手识别反转,需要对图片进行水平翻转cv2.flip(),最好先水平翻转再转化为c coder格式排列,即将cv2.flip(),函数放在np.ascontiguousarray()函数前。若将cv2.flip()函数放在np.ascontiguousarray()函数之后会发现没有任何作用,左右手依然识别错误。文章来源地址https://www.toymoban.com/news/detail-756408.html
到了这里,关于error: OpenCV(4.8.0) :-1: error: (-5:Bad argument) in function ‘line‘的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!