我嘗試使用cv.imread()函式將多個影像匯入到 opencv 。我認為我提供路徑的方式有問題imread()。
使用一個檔案就可以了:
cv.imread('data/img.png')
但是在 for 回圈中:
imgs = os.listdir('./data')
targets = []
for img in imgs:
target = cv.imread(img)
targets.append(target)
我不斷得到一個充滿 None 值的陣列,這意味著 opencv 沒有加載檔案。
print(img)給我一個['btn1.png','btn2.png','btn3.png']對我來說似乎很好的輸出:它是一個字串串列。
我在這里做錯了什么,為什么這個字串在列印給我時沒有傳遞?
uj5u.com熱心網友回復:
問題是 imgs 包含影像的檔案名,但它們不是完整的檔案路徑,因此您的程式找不到您的影像檔案。
嘗試將您的程式修復為類似
root_dir = './data'
imgs = [os.path.join(root_dir, f) for f in os.listdir(root_dir)]
targets = []
for img in imgs:
target = cv2.imread(img)
targets.append(target)
uj5u.com熱心網友回復:
os.listdir給出檔案名,而不是它的路徑。您需要重新添加路徑或使用包含路徑的不同 API。glob.glob(os.path.join("path", "*.png"))會做的。但你也可以使用pathlib
from pathlib import Path
targets = [cv.imread(path) for path in Path("data").glob("*.png")]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/327245.html
標籤:Python opencv python-3.7 已读
下一篇:無法顯示影像opencv(c )
