[OpenCV][Python]路徑有中文一樣能讀取圖檔

更新於 發佈於 閱讀時間約 2 分鐘

使用cv2.imread讀取圖片時,如果路徑有包含到中文,就會報錯。

本文將提供另外一個方式cv2.imdecode,路徑有包含到中文時仍可以正常讀取圖片。


測試範例

import cv2

img = cv2.imread('D:/CRABpy/write/圖檔/chars_01.png')

cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

異常報錯​

raw-image

程式範例

import cv2
import numpy as np


file_path = 'D:/CRABpy/write/圖檔/chars_01.png'
img = cv2.imdecode(np.fromfile(file=file_path, dtype=np.uint8), cv2.IMREAD_COLOR)

cv2.imwrite('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

成功讀取圖

img

img



語法說明

cv2.imdecode(np.fromfile(file=file_path, dtype=np.uint8), cv2.IMREAD_COLOR)


這種用法主要用來處理檔案路徑包含非 ASCII 字元的情況(例如中文路徑),以及解決某些情況下 OpenCV cv2.imread 讀取圖像失敗的問題。

這個方法的原理是先使用 numpy.fromfile 讀取二進位檔案資料,然後再使用 OpenCV 的 cv2.imdecode 將二進位資料解碼成圖像。這樣可以避免一些路徑編碼問題。

以下是這段程式碼的詳細說明:

  1. np.fromfile(file=file_path, dtype=np.uint8)
    • np.fromfile 用來從檔案中讀取二進位資料。
    • file=file_path 指定檔案路徑。
    • dtype=np.uint8 指定資料型態為 8 位元無符號整數,這是圖像資料的一般型態。
  2. cv2.imdecode
    • cv2.imdecode 用來解碼二進位圖像資料。
    • 第一個參數是二進位資料(由 np.fromfile 讀取)。
    • 第二個參數是cv2.IMREAD_COLOR 表示將圖像解碼為彩色圖像。
avatar-img
134會員
221內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
螃蟹_crab的沙龍 的其他內容
本文將介紹,在圖像中找出最大矩形的物件來定位。
本篇文章主要講述cv2.connectedComponent應用於物件上的分割,將不同文字分割並用不同顏色標記。 範例程式結果圖 cv2.connectedComponentsWithStats 是 OpenCV 中用來執行連通元件標記的函式之一。
針對辨識物的不同,流程就會不一樣,在依照現實狀況進行刪減,以下說明為個人常用的流程。 基本流程: 讀圖 灰階 濾波 (看圖片雜訊多不多) 二值化 連通區域 特徵篩選 特徵資訊 辨識 - (OCR,量測,瑕疵檢測等。) 名詞介紹 Gray 灰階 將原始的彩色圖像轉換為灰階圖
伽瑪校正(Gamma correction)被視為影像增強的一種方法之一。 通過調整 gamma 值,可以改變圖像的亮度和對比度,從而使圖像更清晰或更具有視覺效果。 以下將利用cv2.LUT及numpy的組合實現伽瑪校正,及詳細介紹cv2.LUT 函式應用。
介紹OpenCV中的cv2.matchTemplate和cv2.minMaxLoc函數的使用方法和參數,提供程式範例以及相關特徵匹配的詳細介紹,讓讀者對此有更深入的瞭解。
[OpenCV應用][Python]找出圖像中的四個方位的邊緣點求出寬高 呈上篇應用Numpy找到的座標點,那我們如何捨棄掉差異過大的座標點呢? 可能圖像物件邊緣不佳,採樣就會差異過大,造成計算出的寬高是不準確的。 遇到這種狀況,就可以使用下方的程式範例來篩選座標點。 為求方便,此範例跟圖
本文將介紹,在圖像中找出最大矩形的物件來定位。
本篇文章主要講述cv2.connectedComponent應用於物件上的分割,將不同文字分割並用不同顏色標記。 範例程式結果圖 cv2.connectedComponentsWithStats 是 OpenCV 中用來執行連通元件標記的函式之一。
針對辨識物的不同,流程就會不一樣,在依照現實狀況進行刪減,以下說明為個人常用的流程。 基本流程: 讀圖 灰階 濾波 (看圖片雜訊多不多) 二值化 連通區域 特徵篩選 特徵資訊 辨識 - (OCR,量測,瑕疵檢測等。) 名詞介紹 Gray 灰階 將原始的彩色圖像轉換為灰階圖
伽瑪校正(Gamma correction)被視為影像增強的一種方法之一。 通過調整 gamma 值,可以改變圖像的亮度和對比度,從而使圖像更清晰或更具有視覺效果。 以下將利用cv2.LUT及numpy的組合實現伽瑪校正,及詳細介紹cv2.LUT 函式應用。
介紹OpenCV中的cv2.matchTemplate和cv2.minMaxLoc函數的使用方法和參數,提供程式範例以及相關特徵匹配的詳細介紹,讓讀者對此有更深入的瞭解。
[OpenCV應用][Python]找出圖像中的四個方位的邊緣點求出寬高 呈上篇應用Numpy找到的座標點,那我們如何捨棄掉差異過大的座標點呢? 可能圖像物件邊緣不佳,採樣就會差異過大,造成計算出的寬高是不準確的。 遇到這種狀況,就可以使用下方的程式範例來篩選座標點。 為求方便,此範例跟圖
你可能也想看
Google News 追蹤
Thumbnail
在創作的路上真的很多人問我說 到底要怎麼做出符合自己期待 但又可以表現得很有美感的作品?🥹 這個問題真的應該是每個創作者都一直在學習的課題吧!
提問的內容越是清晰,強者、聰明人越能在短時間內做判斷、給出精準的建議,他們會對你產生「好印象」,認定你是「積極」的人,有機會、好人脈會不自覺地想引薦給你
Thumbnail
學習如何將掃描的PDF轉換為可搜索文本,並高效管理和查找文件。探索先進的OCR技術如何提升文檔處理效率。
Thumbnail
在本文中,我們將瞭解如何將掃描的PDF轉換為可搜索文本,並高效管理和查找文件。探索先進的OCR技術如何提升文檔處理效率。
Thumbnail
本文在介紹如何用Python繪製各點大小不同的散布圖及用箭頭標註特殊點
Thumbnail
當我們在進行影像處理時, 在Python的世界最常聽到的就是OpenCV, 而我們在處理影片時也會想要僅針對某時間段的影片進行處理, 今天我們就來教您如何透過OpenCV來讀取特定的時間區段。 在進入主題之前, 有一些基本概念務必先行建立, 一個影片是由多張圖片組成的, 因此最小單元為一張圖
Thumbnail
EasyOCR是一個能夠幫助你對圖片中的文字進行辨識的工具,透過進階分析,可以應用在文件掃描、自動化數據輸入、發票掃描等領域。本章節將介紹如何安裝、引用模型、進行文字辨識、以及辨識結果的分析。透過學習,你可以建立屬於自己的文字辨識系統。
Thumbnail
在創作的路上真的很多人問我說 到底要怎麼做出符合自己期待 但又可以表現得很有美感的作品?🥹 這個問題真的應該是每個創作者都一直在學習的課題吧!
提問的內容越是清晰,強者、聰明人越能在短時間內做判斷、給出精準的建議,他們會對你產生「好印象」,認定你是「積極」的人,有機會、好人脈會不自覺地想引薦給你
Thumbnail
學習如何將掃描的PDF轉換為可搜索文本,並高效管理和查找文件。探索先進的OCR技術如何提升文檔處理效率。
Thumbnail
在本文中,我們將瞭解如何將掃描的PDF轉換為可搜索文本,並高效管理和查找文件。探索先進的OCR技術如何提升文檔處理效率。
Thumbnail
本文在介紹如何用Python繪製各點大小不同的散布圖及用箭頭標註特殊點
Thumbnail
當我們在進行影像處理時, 在Python的世界最常聽到的就是OpenCV, 而我們在處理影片時也會想要僅針對某時間段的影片進行處理, 今天我們就來教您如何透過OpenCV來讀取特定的時間區段。 在進入主題之前, 有一些基本概念務必先行建立, 一個影片是由多張圖片組成的, 因此最小單元為一張圖
Thumbnail
EasyOCR是一個能夠幫助你對圖片中的文字進行辨識的工具,透過進階分析,可以應用在文件掃描、自動化數據輸入、發票掃描等領域。本章節將介紹如何安裝、引用模型、進行文字辨識、以及辨識結果的分析。透過學習,你可以建立屬於自己的文字辨識系統。