最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python使用OpenCV讀取圖片返回None排查及解決技巧

 更新時(shí)間:2026年05月29日 08:54:43   作者:我材不敲代碼  
這段描述主要講解了使用OpenCV讀取圖片時(shí)遇到讀取圖片為空(None)問題的解決方法,重點(diǎn)包括路徑問題、圖片本身問題和權(quán)限問題三大方面,詳細(xì)解析了路徑錯(cuò)誤、圖片損壞、權(quán)限不足等常見問題,并并提供解決方案和排查代碼,需要的朋友可以參考下

使用 OpenCV 做圖像處理時(shí),最讓人頭疼的問題之一就是:cv2.imread() 讀出來的圖片是空(None,程序直接報(bào)錯(cuò) AttributeError: 'NoneType' object has no attribute 'shape'

一、先確認(rèn):你的圖片真的是空嗎?

首先用兩行代碼快速判斷,讀出來的對(duì)象是不是 None

import cv2

img = cv2.imread("test.jpg")
print(img)  # 輸出 None 就是讀取失敗
print(type(img))  # <class 'NoneType'> 代表讀取失敗

只要輸出 None,就說明 圖片路徑錯(cuò)誤 / 權(quán)限不足 / 格式不支持 / 圖片損壞,下面逐個(gè)排查!

二、最常見原因:路徑問題(80% 的人栽在這里)

1. 相對(duì)路徑錯(cuò)誤(新手重災(zāi)區(qū))

cv2.imread()相對(duì)路徑是相對(duì)于「當(dāng)前運(yùn)行 Python 的工作目錄」,不是你寫代碼的 .py 文件所在目錄!

錯(cuò)誤示例:

  • 代碼文件在 D:/project/test.py
  • 圖片放在 D:/project/img/test.jpg
  • 你運(yùn)行命令的目錄是 D:/
  • img = cv2.imread("img/test.jpg") 就會(huì)失敗

解決方法:

  1. 使用絕對(duì)路徑(最穩(wěn)妥,推薦新手用)
# Windows 絕對(duì)路徑
img = cv2.imread("D:/project/img/test.jpg")  
# 或者用反斜杠,但必須加 r 轉(zhuǎn)義
img = cv2.imread(r"D:\project\img\test.jpg")
  1. 獲取代碼文件所在目錄,拼接路徑(兼容性最強(qiáng))
import cv2
import os

# 獲取當(dāng)前 .py 文件的絕對(duì)路徑
base_path = os.path.dirname(os.path.abspath(__file__))
# 拼接圖片路徑
img_path = os.path.join(base_path, "img", "test.jpg")

img = cv2.imread(img_path)

2. 路徑包含中文 / 特殊字符

OpenCV 默認(rèn)不支持中文路徑!這是超級(jí)大坑!

 錯(cuò)誤:

img = cv2.imread("D:/測試文件夾/圖片.jpg")  # 直接返回 None

 解決方法(萬能方案):

import cv2
import numpy as np

# 先用 imdecode 讀取,支持中文路徑
def cv_imread(file_path):
    # 讀取圖片字節(jié)數(shù)據(jù)
    cv_img = cv2.imdecode(np.fromfile(file_path, dtype=np.uint8), cv2.IMREAD_COLOR)
    return cv_img

# 使用這個(gè)函數(shù)代替 cv2.imread
img = cv_imread("D:/測試文件夾/圖片.jpg")

3. 路徑中空格、拼寫錯(cuò)誤

  • 檢查文件名:test .jpg(多了空格)、tes.jpg(拼寫錯(cuò)誤)
  • 檢查后綴:.png 寫成 .pnj、.jpg 寫成 .jpeg

三、第二大原因:圖片本身問題

1. 圖片損壞 / 未下載完成

  • 圖片下載一半中斷、傳輸失敗、文件損壞
  • 用系統(tǒng)圖片查看器打開,如果打不開 / 顯示空白,OpenCV 肯定讀不出來

解決:重新下載 / 替換正常圖片

2. 圖片格式不支持

OpenCV 支持:jpg、jpeg、png、bmp、tiff 等常見格式

不支持:

  • WebP 格式(直接讀會(huì)失?。?/li>
  • HEIC(蘋果手機(jī)格式)
  • 動(dòng)圖 GIF

解決:

  1. WebP 用 PIL 先轉(zhuǎn)成 PNG/JPG 再讀
  2. HEIC 用 pyheif 庫轉(zhuǎn)換

四、權(quán)限 / 文件被占用

  1. 圖片被其他軟件占用(如圖片查看器、PS 打開著)
  2. 文件權(quán)限不足(Linux/macOS 下沒有讀權(quán)限)

Linux/macOS 賦權(quán)命令:

chmod 644 你的圖片路徑

五、OpenCV 安裝問題

如果所有路徑、圖片都正常,還是讀不出來,大概率是 OpenCV 裝錯(cuò)了:

常見錯(cuò)誤安裝:

# 不推薦,缺少依賴庫
pip install opencv-python

推薦安裝:

# 完整版本,包含所有依賴(解決大部分底層讀取失?。?
pip install opencv-contrib-python

安裝后重啟 Python 環(huán)境!

六、終極排查代碼(直接復(fù)制用)

把這段代碼放到你的項(xiàng)目里,自動(dòng)檢測所有錯(cuò)誤原因

import cv2
import os

def check_image_read(img_path):
    # 1. 判斷文件是否存在
    if not os.path.exists(img_path):
        print("錯(cuò)誤:文件不存在!")
        return None
    
    # 2. 判斷是否是文件
    if not os.path.isfile(img_path):
        print("錯(cuò)誤:這不是一個(gè)文件!")
        return None
    
    # 3. 讀取圖片
    img = cv2.imread(img_path)
    
    # 4. 判斷是否讀取成功
    if img is None:
        print("錯(cuò)誤:cv2.imread 讀取失敗!")
        print("可能原因:中文路徑/圖片損壞/格式不支持/權(quán)限不足")
        # 嘗試用中文路徑兼容方案讀取
        try:
            import numpy as np
            img = cv2.imdecode(np.fromfile(img_path, dtype=np.uint8), cv2.IMREAD_COLOR)
            if img is not None:
                print("已自動(dòng)用中文路徑方案修復(fù)!")
        except:
            pass
    else:
        print("圖片讀取成功!圖片形狀:", img.shape)
    return img

# 測試
if __name__ == "__main__":
    # 替換成你的圖片路徑
    image_path = "test.jpg"  
    check_image_read(image_path)

七、總結(jié):快速排查口訣

  1. 先打印看是否 None,確定是讀取失敗
  2. 路徑優(yōu)先查:絕對(duì)路徑 / 中文 / 拼寫 / 空格
  3. 圖片本身查:損壞 / 格式 / 后綴
  4. 權(quán)限占用查:關(guān)閉占用軟件、賦權(quán)
  5. 庫重裝:用 opencv-contrib-python
  6. 中文路徑必用 imdecode

總結(jié)

  1. cv2.imread() 返回 None 90% 是路徑問題,優(yōu)先用絕對(duì)路徑
  2. 中文路徑必須用 cv2.imdecode() 方案
  3. 圖片損壞、格式不支持、權(quán)限不足也會(huì)導(dǎo)致讀取失敗
  4. 終極方案:復(fù)制我寫的排查代碼,一鍵定位問題

以上就是Python使用OpenCV讀取圖片返回None排查及解決技巧的詳細(xì)內(nèi)容,更多關(guān)于Python OpenCV讀取圖片返回None的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 基于python3實(shí)現(xiàn)倒敘字符串

    基于python3實(shí)現(xiàn)倒敘字符串

    這篇文章主要介紹了基于python3實(shí)現(xiàn)倒敘字符串,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • torch 中各種圖像格式轉(zhuǎn)換的實(shí)現(xiàn)方法

    torch 中各種圖像格式轉(zhuǎn)換的實(shí)現(xiàn)方法

    這篇文章主要介紹了torch 中各種圖像格式轉(zhuǎn)換的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 詳解Python中dbm模塊和shelve模塊的使用

    詳解Python中dbm模塊和shelve模塊的使用

    這篇文章主要為大家詳細(xì)介紹了Python中dbm模塊和shelve模塊的具體用法,文中的示例代碼簡潔易懂,對(duì)我們深入學(xué)習(xí)Python有一定的幫助,需要的可以參考下
    2023-10-10
  • python 實(shí)現(xiàn)求解字符串集的最長公共前綴方法

    python 實(shí)現(xiàn)求解字符串集的最長公共前綴方法

    今天小編就為大家分享一篇python 實(shí)現(xiàn)求解字符串集的最長公共前綴方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • python 常見字符串與函數(shù)的用法詳解

    python 常見字符串與函數(shù)的用法詳解

    這篇文章主要介紹了python 常見字符串與函數(shù)的用法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-11-11
  • python管理包路徑之pycharm自動(dòng)解決包路徑注冊(cè)

    python管理包路徑之pycharm自動(dòng)解決包路徑注冊(cè)

    這篇文章主要介紹了python本管理包路徑之pycharm自動(dòng)解決包路徑注冊(cè),文章通過圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • 虛擬機(jī)下載python是否需要聯(lián)網(wǎng)

    虛擬機(jī)下載python是否需要聯(lián)網(wǎng)

    在本篇文章里小編給大家分享的是一篇關(guān)于虛擬機(jī)下載python是否需要聯(lián)網(wǎng)的相關(guān)文章,有需要的朋友們可以參考下。
    2020-07-07
  • 從pandas一個(gè)單元格的字符串中提取字符串方式

    從pandas一個(gè)單元格的字符串中提取字符串方式

    今天小編就為大家分享一篇從pandas一個(gè)單元格的字符串中提取字符串方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Keras搭建M2Det目標(biāo)檢測平臺(tái)示例

    Keras搭建M2Det目標(biāo)檢測平臺(tái)示例

    這篇文章主要為大家介紹了Keras搭建M2Det目標(biāo)檢測平臺(tái)實(shí)現(xiàn)的源碼示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Python入門篇之?dāng)?shù)字

    Python入門篇之?dāng)?shù)字

    本文的主題是 Python 中的數(shù)字。會(huì)詳細(xì)介紹每一種數(shù)字類型,它們適用的各種運(yùn)算符, 以及用于處理數(shù)字的內(nèi)建函數(shù)。在文章的末尾, 簡單介紹了幾個(gè)標(biāo)準(zhǔn)庫中用于處理數(shù)字的模塊。
    2014-10-10

最新評(píng)論

巴南区| 黑山县| 淮北市| 兴宁市| 贡嘎县| 林甸县| 高台县| 盐山县| 准格尔旗| 阿鲁科尔沁旗| 阿拉尔市| 兴安县| 高尔夫| 濉溪县| 分宜县| 微山县| 芷江| 太康县| 韩城市| 阿合奇县| 诸暨市| 台山市| 启东市| 大连市| 五原县| 通道| 迭部县| 古浪县| 自贡市| 鹤庆县| 小金县| 饶平县| 龙南县| 五常市| 黄平县| 葵青区| 札达县| 班戈县| 龙游县| 庆阳市| 土默特左旗|