当前位置:   article > 正文

Opencv错误笔记(一):通过cv2保存图片采用中文命名出现乱码_cv2.imwrite中文名

cv2.imwrite中文名

通过迭代方式保存图片的时候,通过imwrite可以很好的将不同命名的图片保存在文件中,但是我今天遇到一个很奇葩的问题,图片全部保存下来了,但是每张图片的中文命名出现了乱码,如下图:
在这里插入图片描述
原部分代码如下:

ef cnn_predict(cnn, Lic_img):
    characters = ["京", "沪", "津", "渝", "冀", "晋", "蒙", "辽", "吉", "黑", "苏", "浙", "皖", "闽", "赣", "鲁", "豫",
                  "鄂", "湘", "粤", "桂", "琼", "川", "贵", "云", "藏", "陕", "甘", "青", "宁", "新", "0", "1", "2",
                  "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M",
                  "N", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]
    Lic_pred = []
    for lic in Lic_img:
        lic_pred = cnn.predict(lic.reshape(1, 80, 240, 3))  # 预测形状应为(1,80,240,3)
        lic_pred = np.array(lic_pred).reshape(7, 65)  # 列表转为ndarray,形状为(7,65)
        if len(lic_pred[lic_pred >= 0.8]) >= 4:  # 统计其中预测概率值大于80%以上的个数,大于等于4个以上认为识别率高,识别成功
            chars = ''
            for arg in np.argmax(lic_pred, axis=1):  # 取每行中概率值最大的arg,将其转为字符
                chars += characters[arg]
            chars = chars[0:2] + '·' + chars[2:]
            f = open('test.txt', 'a+')
            if chars:
                print(chars)
                f.write('%s %s \n' % (path,chars))
            else:
                print('Unable to recognize')
                f.write('Unable to recognize_%s\n' % (path))

            Lic_pred.append((lic, chars))  # 将车牌和识别结果一并存入Lic_pred
            save_path = 'F:/Dataset/car/'
            cv2.imwrite(save_path+'{}.jpg'.format(chars),lic)
            os.makedirs(os.path.dirname(save_path),exist_ok=True)
            if Lic_pred:
                print('success')
            else:
                a = '未能识别'
                f.write('%s %s \n' % (path, a))
    return Lic_pred
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

在代码中是没有问题的,通过print也能够正确的输出,经查阅资料,发现是乱码的原因,也找到了解决办法:将源代码的
cv2.imwrite(save_path+’{}.jpg’.format(chars),lic)
改为
cv2.imencode(’.jpg’, lic)[1].tofile(save_path+chars+’.jpg’)
然后再运行
就可以成功解决,结果图如下
在这里插入图片描述

注意:
#读取中文路径
def cv_imread(file_paht):
cv_img=cv2.imdecode(np.fromfile(file_paht,dtype=np.uint8),-1)
return cv_img
#保存中文路径
def cv_imwrite(savePath,tem):
cv2.imencode(’.jpg’,tem)[1].tofile(savePath) # 保存图片

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/857791
推荐阅读
相关标签
  

闽ICP备14008679号