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文件,然后進(jìn)行一些處理出現(xiàn)上面報(bào)錯(cuò)。
此原因可能由于 matlab和python存儲(chǔ)方式不同。
Pascal, C,C++,Python都是行優(yōu)先存儲(chǔ)的,而Fortran,MatLab是列優(yōu)先存儲(chǔ)的。
即
C order 以及?Fortran order
-
C order
?指的是行優(yōu)先的順序(Row-major Order),即內(nèi)存中同行的元素存在一起, -
Fortran Order
則指的是列優(yōu)先的順序(Column-major Order),即內(nèi)存中同列的元素存在一起。
解決方法:在python中使用函數(shù):
?
np.ascontiguousarray()
使得數(shù)組轉(zhuǎn)化為C-order存儲(chǔ)即可。
參考:
numpy中的np.ascontiguousarray()函數(shù) - 知乎 (zhihu.com)文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-756408.html
?若保存的mat文件為RGB圖片,當(dāng)使用mediapipe在本圖片上進(jìn)行提取手部關(guān)節(jié)點(diǎn)時(shí)候,可能會(huì)發(fā)現(xiàn)左右手識(shí)別反轉(zhuǎn),需要對(duì)圖片進(jìn)行水平翻轉(zhuǎn)cv2.flip(),最好先水平翻轉(zhuǎn)再轉(zhuǎn)化為c coder格式排列,即將cv2.flip(),函數(shù)放在np.ascontiguousarray()函數(shù)前。若將cv2.flip()函數(shù)放在np.ascontiguousarray()函數(shù)之后會(huì)發(fā)現(xiàn)沒(méi)有任何作用,左右手依然識(shí)別錯(cuò)誤。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-756408.html
到了這里,關(guān)于error: OpenCV(4.8.0) :-1: error: (-5:Bad argument) in function ‘line‘的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!