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 相同版本的虚拟环境下进行的;目前导致错误不同结果原因未知



版权声明:本文为weixin_42388228原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。