使用Python OpenCV读取/加载图像路径(中文、日文、韩文)中包含unicode字符的图像

2024-05-14 13:56:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个图像目录,每个图像的名称中都有一个汉字。我试图列出所有图像,在列表上循环,读取并显示每个图像

图像路径类似于https://github.com/sirius-ai/LPRNet_Pytorch/tree/master/data/test

在python3.6.9中使用glob,图像名称如下

enter image description here

当我用cv2.imread阅读它们时导致Segmentation Fault

我怎样才能解决这个问题


Tags: https图像路径githubmaster目录名称com
2条回答

这不是OpenCV问题,而是获取文件名的正确字符串表示形式。我们可以深入研究所有这些是如何工作的,但是这个问题应该在python3中解决,所以首先:您确定您使用的是python3而不是python2吗?如果你确定的话,我会跟进的

Comparison

后续行动: 如果你执行这两个命令,你是否也会出现Seg故障

wget https://raw.githubusercontent.com/sirius-ai/LPRNet_Pytorch/master/data/test/%E4%BA%ACPL3N67.jpg

python3 -c 'import cv2; import glob; print(cv2.imread(glob.glob("*")[0]).shape)'

您应该将(800800,3)打印到屏幕上

如果没有,那么python3 -c 'import subprocess; subprocess.call(["ls"])' 会给你什么?可能是您下载的文件只是用“字节名”保存的

一种方法是使用^{}将图像转换为一维ndarray,然后使用^{}将其转换为正常的三维BGR图像格式。根据图像格式(如果具有透明度),可以更改解码标志。查看here以获取完整的标志列表

import cv2
import numpy as np
import glob

for path in glob.glob("images/*.jpg"):
    # Image is in BGR format
    image = cv2.imdecode(np.fromfile(path, dtype=np.uint8), cv2.IMREAD_UNCHANGED)
    cv2.imshow('image', image)
    cv2.waitKey(1000)

enter image description here

注意:它似乎适用于任何unicode图像文件(中文、日文、韩文、俄文等)

相关问题 更多 >

    热门问题