SystemError: built-in function imread returned NULL without setting an error

背景:
將含有字符串的list存入txt, ‘wb’和’rb’均爲以二進制的方法寫入和讀取,所以在讀取後的這個list中的元素都是爲二進制的, 如b’/data/…/Out_0043.bmp’,前面有個b;這種目錄給cv2.imread讀取就會報錯SystemError: returned NULL without setting an error

import pickle
with open('/data/.../train_set.txt','wb') as fp:
    pickle.dump(train_video_dir,fp)
with open('/data/.../train_set.txt','rb') as fp:
    train_video_dir=pickle.load(fp)

解決:
把目錄轉換一下就好了

case_dir=b'/data/.../Out_0043.bmp'
case_dir=case_dir.decode('ascii')

不過在多個服務器中測試了,ubuntu 18.04 + base python 3.7就算沒有轉換也是沒有問題的,但到了ubuntu + base python 2.7就出現這樣的問題了;當然以上操作都是在python 3.6 + opencv 4.1 相同版本的虛擬環境下進行的;目前導致錯誤不同結果原因未知


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章