簡體   English   中英

使用 Python OpenCV 在圖像路徑(中文、日文、韓文)中讀取/加載帶有 unicode 字符的圖像

[英]Read/load images with unicode characters in image path (Chinese, Japanese, Korean) with Python OpenCV

我有一個圖像目錄,每個圖像的名稱中都有一個漢字。 我正在嘗試列出所有圖像,在列表上循環,閱讀並顯示每個圖像。

圖像路徑類似於https://github.com/sirius-ai/LPRNet_Pytorch/tree/master/data/test

python3.6.9 中使用glob ,圖像名稱是這樣的

在此處輸入圖片說明

當我用cv2.imread讀取它們時導致Segmentation Fault

我怎么解決這個問題?。

這不是OpenCV問題,而是獲取文件名的正確字符串表示形式。 我們可以深入研究所有這些是如何工作的,但是這樣的問題應該在python3 ,所以首先:你確定你使用的是python3而不是python2嗎? 如果你確定,我會跟進。

比較

跟進:所以如果你執行這兩個命令,你是否也會得到 Seg Fault?

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)'

您應該將 (800,800,3) 打印到屏幕上。

如果沒有, python3 -c 'import subprocess; subprocess.call(["ls"])'是什么python3 -c 'import subprocess; subprocess.call(["ls"])' python3 -c 'import subprocess; subprocess.call(["ls"])'給你? 可能是您剛剛下載的文件以“字節名稱”保存。

一種方法是使用np.fromfile()將圖像轉換為 1-D ndarray然后使用cv2.imdecode()將其轉換為普通的 3-D 形狀的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 圖像文件(中文、日文、韓文、俄文等)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM