2024-05-14 13:56:01 发布
网友
我有一个图像目录,每个图像的名称中都有一个汉字。我试图列出所有图像,在列表上循环,读取并显示每个图像
图像路径类似于https://github.com/sirius-ai/LPRNet_Pytorch/tree/master/data/test
在python3.6.9中使用glob,图像名称如下
glob
当我用cv2.imread阅读它们时导致Segmentation Fault
cv2.imread
Segmentation Fault
我怎样才能解决这个问题
这不是OpenCV问题,而是获取文件名的正确字符串表示形式。我们可以深入研究所有这些是如何工作的,但是这个问题应该在python3中解决,所以首先:您确定您使用的是python3而不是python2吗?如果你确定的话,我会跟进的
OpenCV
python3
python2
后续行动: 如果你执行这两个命令,你是否也会出现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"])' 会给你什么?可能是您下载的文件只是用“字节名”保存的
python3 -c 'import subprocess; subprocess.call(["ls"])'
一种方法是使用^{}将图像转换为一维ndarray,然后使用^{}将其转换为正常的三维BGR图像格式。根据图像格式(如果具有透明度),可以更改解码标志。查看here以获取完整的标志列表
ndarray
BGR
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)
注意:它似乎适用于任何unicode图像文件(中文、日文、韩文、俄文等)
这不是
OpenCV
问题,而是获取文件名的正确字符串表示形式。我们可以深入研究所有这些是如何工作的,但是这个问题应该在python3
中解决,所以首先:您确定您使用的是python3
而不是python2
吗?如果你确定的话,我会跟进的后续行动: 如果你执行这两个命令,你是否也会出现Seg故障
您应该将(800800,3)打印到屏幕上
如果没有,那么
python3 -c 'import subprocess; subprocess.call(["ls"])'
会给你什么?可能是您下载的文件只是用“字节名”保存的一种方法是使用^{} 将图像转换为一维} 将其转换为正常的三维
ndarray
,然后使用^{BGR
图像格式。根据图像格式(如果具有透明度),可以更改解码标志。查看here以获取完整的标志列表注意:它似乎适用于任何unicode图像文件(中文、日文、韩文、俄文等)
相关问题 更多 >
编程相关推荐