[OpenCV][Python]避免路徑中的反斜槓 \ 需要轉義的問題

更新 發佈閱讀 6 分鐘

在 Python 中,處理檔案路徑時,反斜槓 \ 是一個特殊的字元,它常用於轉義序列(例如 \n 代表換行符號)。

因此,如果你直接在字串中使用反斜槓,可能會產生轉義字元的誤解。為了避免路徑中的反斜槓 \ 需要轉義的問題,這種情況下會導致路徑解析錯誤。

本文將提供幾種方法來解決此問題。


先試著用VScode,右鍵點擊複製路徑

直接用這路徑來讀圖看看

D:\python\crab\d\111.jpg
vocus|新世代的創作平台



程式範例

直接用複製的路徑,python會把\當作轉義符號,就無法正常讀取圖片。

import cv2

file_path = 'D:\python\crab\d\111.jpg'
img = cv2.imread(file_path)

if img:
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
else:
print('未讀取到圖片')
vocus|新世代的創作平台




可以使用以下幾種方法來輕鬆處理 路徑的問題:

1. 使用 原始字符串 r''

你可以直接使用原始字符串的方式來避免反斜槓轉義問題,這樣每個反斜槓會被視為普通字符,不需要手動進行轉換:

import cv2
file_path = r'D:\python\crab\d\111.jpg'
img = cv2.imread(file_path)

if img is None:
print('未讀取到圖片')
else:
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

這樣就能正常地讀取到圖片了

vocus|新世代的創作平台

2. 使用 pathlib

Python 的pathlib 提供了更方便、跨平台的處理路徑的方法,這樣你就不必手動調整 \/,這些方法會自動根據你的操作系統格式化路徑。

使用 pathlib

pathlib 是更現代化的路徑處理工具,特別適合跨平台的應用,可以自動管理路徑分隔符號。

from pathlib import Path
import cv2

# 使用 pathlib 處理路徑
file_path = Path("D:/python/crab/d/111.jpg")

# 讀取圖片
image = cv2.imread(file_path)

if image is None:
print('未讀取到圖片')
else:
print('有讀取到圖片')
vocus|新世代的創作平台

這樣,你就可以不再擔心路徑分隔符號的轉換問題,pathlib 會自動根據操作系統處理路徑。Windows 上仍然會使用反斜槓顯示,但不需要手動轉換。

3. 使用 雙斜槓 \\

如果你堅持使用普通字符串,也可以用雙斜槓 \\ 來表示路徑中的反斜槓,這樣可以避免反斜槓的轉義問題,但不建議因為不美觀,也會有隱藏的問題存在

import cv2

# 使用 pathlib 處理路徑
file_path = "D://python//crab//d//111.jpg"

# 讀取圖片
image = cv2.imread(file_path)

if image is None:
print('未讀取到圖片')
else:
print('有讀取到圖片')

使用 雙斜槓 \\隱藏問題或不便:

  1. 跨平台兼容性
    • 使用雙斜槓適用於 Windows,但如果你的代碼需要在 Linux 或 macOS 上運行,它們使用的是正斜槓 / 作為路徑分隔符號。儘管 Python 自動處理 Windows 和 Linux 之間的路徑分隔符(反斜槓和正斜槓),但在多個系統中混合使用雙斜槓和正斜槓可能會讓代碼變得不易讀、難以維護。
  2. 代碼可讀性降低
    例如:
    path = "D:\\python\\project\\data\\images\\test.jpg"
    • 雙斜槓 \\ 在路徑中看起來比較冗長,尤其是在長路徑中。這會降低代碼的可讀性,讓人難以快速理解這段代碼,特別是在路徑中有許多文件夾時。
  3. 易出錯
    • 如果忘記了某處應該使用雙斜槓,可能會導致難以追蹤的錯誤。例如,單斜槓 \n 是換行符,\t 是製表符,這樣的情況可能會導致路徑解析錯誤,或者出現奇怪的轉義行為。
  4. 不符合現代化編程風格
    • 在 Python 3.4 引入 pathlib 之後,處理路徑的現代化方法(如 pathlib.Path)更推薦,這樣能自動處理跨平台的路徑問題,讓代碼更加一致並且容易維護。



建議的替代方案:

最方便的方法是使用 pathlib原始字符串 r'',這樣不僅解決了路徑分隔符號的問題,還能讓你的代碼更加跨平台和易讀。

留言
avatar-img
螃蟹_crab的沙龍
169會員
322內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。 興趣是攝影,踏青,探索未知領域。 人生就是不斷的挑戰及自我認清,希望老了躺在床上不會後悔自己什麼都沒做。
螃蟹_crab的沙龍的其他內容
2025/01/01
錯誤訊息 Makefile:221: *** found no data/foo-ground-truth/*.gt.txt for data/foo/all-gt. Stop. 原先指令 ALL_FILES = $(and $(wildcard $(GROUND_TRUTH_DIR)),$
Thumbnail
2025/01/01
錯誤訊息 Makefile:221: *** found no data/foo-ground-truth/*.gt.txt for data/foo/all-gt. Stop. 原先指令 ALL_FILES = $(and $(wildcard $(GROUND_TRUTH_DIR)),$
Thumbnail
2024/10/12
在有次使用cv2.resize時忽然報錯,就心血來潮不想重新安裝OpenCV,根據缺少的東西想辦法補齊。 在影像處理中,Zlib(以及 zlibwapi.dll)主要用於處理數據壓縮和解壓縮,特別是在處理大型影像文件時。 遺失原因 應用程序安裝過程中未能完整安裝所有所需的依賴項,尤其是 zli
Thumbnail
2024/10/12
在有次使用cv2.resize時忽然報錯,就心血來潮不想重新安裝OpenCV,根據缺少的東西想辦法補齊。 在影像處理中,Zlib(以及 zlibwapi.dll)主要用於處理數據壓縮和解壓縮,特別是在處理大型影像文件時。 遺失原因 應用程序安裝過程中未能完整安裝所有所需的依賴項,尤其是 zli
Thumbnail
2024/10/11
在上一篇文章,使用CUDA加速運行OpenCV發現一個異常,抽絲剝繭找到原因了。 [Python]在 OpenCV 中啟用 CUDA 加速來運行 DNN 超分辨率模型 錯誤描述: Could not locate cublas64_11.dll. Please make sure it i
Thumbnail
2024/10/11
在上一篇文章,使用CUDA加速運行OpenCV發現一個異常,抽絲剝繭找到原因了。 [Python]在 OpenCV 中啟用 CUDA 加速來運行 DNN 超分辨率模型 錯誤描述: Could not locate cublas64_11.dll. Please make sure it i
Thumbnail
看更多
你可能也想看
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
Basic python data structure
Thumbnail
Basic python data structure
Thumbnail
Hi, 大家好。我是茶桁。 前几节课中我们学习了函数,那么这节课开始,我们花几节课返过头来详细的学习一下Python内的数据类型。第一节课,让我们先从字符串开始: 回顾字符串的定义方式 了解转义字符 字符串格式化的方法 字符串相关函数 字符串的定义方式 单引号定义字符串 ‘ ’ 双引
Thumbnail
Hi, 大家好。我是茶桁。 前几节课中我们学习了函数,那么这节课开始,我们花几节课返过头来详细的学习一下Python内的数据类型。第一节课,让我们先从字符串开始: 回顾字符串的定义方式 了解转义字符 字符串格式化的方法 字符串相关函数 字符串的定义方式 单引号定义字符串 ‘ ’ 双引
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
題目敘述 題目給定我們一顆二元樹的根節點,要求我們計算出從根節點到葉子節點的偽回文路徑路徑有幾條? 偽回文路徑路徑 的定義: 路徑經過重新排列之後,可以形成回文Palindrome,也就是頭尾鏡像對稱。 ​ 例如: 1 -> 3 -> 3 重新排列之後,可以形成 3 -> 1 -> 3
Thumbnail
題目敘述 題目給定我們一顆二元樹的根節點,要求我們計算出從根節點到葉子節點的偽回文路徑路徑有幾條? 偽回文路徑路徑 的定義: 路徑經過重新排列之後,可以形成回文Palindrome,也就是頭尾鏡像對稱。 ​ 例如: 1 -> 3 -> 3 重新排列之後,可以形成 3 -> 1 -> 3
Thumbnail
在 Python 中,處理檔案路徑時,反斜槓 \ 是一個特殊的字元,它常用於轉義序列(例如 \n 代表換行符號)。 因此,如果你直接在字串中使用反斜槓,可能會產生轉義字元的誤解。為了避免路徑中的反斜槓 \ 需要轉義的問題,這種情況下會導致路徑解析錯誤。 本文將提供幾種方法來解決此問題。 先
Thumbnail
在 Python 中,處理檔案路徑時,反斜槓 \ 是一個特殊的字元,它常用於轉義序列(例如 \n 代表換行符號)。 因此,如果你直接在字串中使用反斜槓,可能會產生轉義字元的誤解。為了避免路徑中的反斜槓 \ 需要轉義的問題,這種情況下會導致路徑解析錯誤。 本文將提供幾種方法來解決此問題。 先
Thumbnail
題目敘述 題目會給定我們一個字串s,要求我們反轉字串s中所有母音字元的順序,並且以字串的形式輸出。 註: 母音字元為a, e, i, o, u 或者 A, E, I, O, U 題目的原文敘述 測試範例 Example 1: Input: s = "hello" Output: "ho
Thumbnail
題目敘述 題目會給定我們一個字串s,要求我們反轉字串s中所有母音字元的順序,並且以字串的形式輸出。 註: 母音字元為a, e, i, o, u 或者 A, E, I, O, U 題目的原文敘述 測試範例 Example 1: Input: s = "hello" Output: "ho
Thumbnail
本文主要介紹使用Numpy實現一個尋找邊界的方法,在用這個方法延伸去判斷2D條碼中圖案L角,根據預定義的方向角度對應表來判斷圖像的角度(0 度、90 度、180 度或 270 度) 設計邏輯 數據過濾: 函式 __filtered_positions 確保在對數據進行處理之前,能夠有效地過濾
Thumbnail
本文主要介紹使用Numpy實現一個尋找邊界的方法,在用這個方法延伸去判斷2D條碼中圖案L角,根據預定義的方向角度對應表來判斷圖像的角度(0 度、90 度、180 度或 270 度) 設計邏輯 數據過濾: 函式 __filtered_positions 確保在對數據進行處理之前,能夠有效地過濾
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
這篇文章,會帶著大家複習以前學過的 區間DP框架, 並且以回文子字串、回文子序列的應用題與概念為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 回文字串的基本定義 s = s[::-1] 也就是說字串s的正序 和 逆序完全相同。 回文字串的基本結構 空字串"
Thumbnail
這篇文章,會帶著大家複習以前學過的 區間DP框架, 並且以回文子字串、回文子序列的應用題與概念為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 回文字串的基本定義 s = s[::-1] 也就是說字串s的正序 和 逆序完全相同。 回文字串的基本結構 空字串"
Thumbnail
1. 概述 在光學字符識別(OCR)過程中,常見的問題之一是「斷字」,即原本應為一個完整字符的部分被錯誤地分割成兩個或多個獨立的字符。這通常發生在掃描文件、圖像降噪或影像二值化處理後。本篇文章將介紹一種基於 骨架化端點距離分析 的斷字檢測方法,並提供完整的 Python 實作。 2. 斷字檢測的
Thumbnail
1. 概述 在光學字符識別(OCR)過程中,常見的問題之一是「斷字」,即原本應為一個完整字符的部分被錯誤地分割成兩個或多個獨立的字符。這通常發生在掃描文件、圖像降噪或影像二值化處理後。本篇文章將介紹一種基於 骨架化端點距離分析 的斷字檢測方法,並提供完整的 Python 實作。 2. 斷字檢測的
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News