先來看看今天的結果圖讓我們歡迎我們的貓貓助教~~~
-> 此篇文章的程式碼 github Day02_圖片讀取顯示存檔_image_load_show_save.ipynb
讀取圖片 cv2.imread讀取圖片的方式很簡單,只需要使用 cv2.imread(file_name)
,
並指定好 file_name
的路徑即可。
file_name = "./testdata/cat.jpg"
# 讀取圖片 laod image
origin_img = cv2.imread(file_name)
-> 補充:快速查看檔案路徑的方式
可以直接將檔案用滑鼠拖入 terminal
中 (windows 可以使用 cmd
),就可以直接得到絕對路徑囉~
顯示圖片 cv2.imshow / 在 jupyter 中直接顯示圖片(透過 matplotlib
)一般傳統使用 OpenCV 的顯示方式就是使用 cv2.imshow('My Image', img)
第一個參數表示視窗名稱,第二個參數就是你的圖片。
這個方式會開一個新的視窗顯示出圖片,相比在 jupyter 內建顯示會清晰很多,
但有時開發還要一直切換視窗,會有點減低效率
,
所以通常開發期間我會更常使用在 jupyter 中直接顯示圖片的方式,
方便我快速察看結果。
# 另外開一個視窗顯示圖片 show_img_OpenCV
def show_img_OpenCV(img):
# 顯示圖片,第一個參數表示視窗名稱,第二個參數就是你的圖片。
cv2.imshow('My Image', img)
# 按下任意鍵則關閉所有視窗
cv2.waitKey(0)
cv2.destroyAllWindows()
而我更常使用的是,透過 matplotlib
直接在 jupyter 中直接顯示圖片,
除了開發快速(能直接顯示結果)之外,也能快速查找座標,
(明天的內容就會理解快速找座標的便利了!)
# 顯示圖片在 jupyter notebook 中 show_img_jupyter
def show_img_jupyter(img):
image_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.imshow(image_rgb)
plt.show()
這裡特別要提到一件事情,我們一般認知的顏色通道通常為 RGB
,
但 OpenCV 中處理圖片的顏色通道為 BGR
,
如果直接顯示出來,就會發現圖片樣子很像,但顏色與想像中不一樣。
(感覺怪怪的…)
此時我們需要使用 cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
,
將顏色通道為從 BGR
先轉回 RGB
後再顯示,就會是我們預期的顏色了!
儲存圖片 cv2.imwrite儲存圖片的方式也很簡單,只需要使用 cv2.imwrite('./test_result/out.jpg', result_img)
,
前面第一個參數為圖片路徑(我們可以直接修改成我們要的副檔名),第二個就是我們的圖片。
# 儲存圖片 save image
# 第一個參數為圖片路徑(可直接修改副檔名),第二個為圖片
cv2.imwrite('./test_result/out.jpg', result_img)
-> 補充 相對路徑與絕對路徑 看完上面文章的讀者們可能會感到疑惑,
我們在寫檔案路徑的時候有使用 ./
開頭的敘述,
這是什麼意思呢?
相對路徑.
表示目前我們所在的路徑,以 ./test_result/out.jpg
文件為例,
我們從這個路徑底下找 test_result
這個資料夾中的 out.jpg
。
就會是我們儲存圖片的地方。
絕對路徑絕對路徑就是檔案完整的路徑
,這種寫法非常的明確,
但缺點就是彈性非常的差
,如果今天將我們的 code 換了一台電腦執行,
甚至只把資料夾移動到另一個地方,絕對路徑馬上就找不到我們要的檔案了。
所以建議大家還是多使用「相對路徑」哦~
雖然我剛學的時候也覺得「絕對路徑」真的很明確很棒XDDD
-> 咦? 怎麼程式碼裡面好像有偷塞些東西 如果讀者仔細看程式碼,可能會發現最後結果怎麼多了一個剪裁圖片的動作?!
這只是為了讓圖片的結果顯得比較不同,(有感覺存到不一樣的檔XD)。
這是明天我們才要來仔細討論的內容哈哈哈哈哈,
但先放出來給大家搶先看囉~
Referencehttps://www.chainnews.com/zh-hant/articles/420945635518.htm
https://blog.gtwang.org/programming/opencv-basic-image-read-and-write-tutorial/
⭐Python OpenCV 相關文章整理⭐: ⭐基礎知識篇⭐: 1. 【OpenCV】1 – 安裝 python OpenCV install 電腦中圖片的基本概念總整理 (附錄:OpenCV 快速測試用程式碼) 2. 【OpenCV】2 – OpenCV 圖片的讀取、顯示、存檔 (load, show, save),附贈簡易理解「相對路徑」與「絕對路徑」 3. 【OpenCV】OpenCV 利用 python OpenCV 查詢 image 大小, img shape sample code (內附範例程式碼) ⭐基本圖像處理篇⭐: 1. 【OpenCV】OpenCV 利用 python OpenCV 縮放圖片 image 大小, cv2 resize (內附程式碼) 2. 【OpenCV】3 – python OpenCV 的剪裁、旋轉、縮放 (crop, rotate, resize) 3. 【OpenCV】4 – 運用 OpenCV 調整光線 (modify brightness, intensity) 4. 【OpenCV】5 – 運用 OpenCV 調整亮度、飽和度(透過轉移至 HLS 顏色空間) modify lightness, saturation 5. 【OpenCV】6 – 運用 OpenCV 調整色調(冷色系/暖色系)、色溫(白平衡)modify color temperature, white balance 6. 【OpenCV】7 – 運用 OpenCV 為圖片增加一些顆粒感 (增加高斯噪點) add gaussian noise 7. 【OpenCV】8 – 運用 OpenCV 改變圖片的對比度 modify contrast (內含:網路上常見錯誤調整對比度方式的分析) 8. 【OpenCV】9 – 運用 OpenCV 降低圖片的高光 reduce highlights 9. 【OpenCV】11 – OpenCV 建立新空白圖、畫點、畫圓 create new pictures, draw points and draw circle 10. 【OpenCV】12 – 運用 OpenCV 畫線、畫矩形、畫橢圓 draw lines, draw rectangle, draw ellipse 11. 【OpenCV】13 – 運用 OpenCV 在圖片上寫文字、查色碼、顯示色碼顏色 write text, get and show RGB Color Code ⭐進階圖像處理篇⭐: 1. 【OpenCV】14 – 運用 OpenCV 顯示圖片直方圖、分離與合併RGB通道 show histogram, split, merge RGB channel 2. 【OpenCV】15 – OpenCV 當然也有像 ps 圖層的功能! 什麼?圖片也能加減法?! Add, Subtract, AddWeighted 3. 【OpenCV】16 – 運用 OpenCV 幫助我們找圖片的輪廓(高斯模糊、Canny) cv2.GaussianBlur, cv2.Canny 4. 【OpenCV】17 – 運用 OpenCV 的終極圖層處理大全, 想P圖該怎麼P (bitwise_or, and, xor, not, addWeighted) 5. 【OpenCV】18 – 運用 OpenCV 做圖片二值化,產生黑白的圖片吧!cv2.threshold 各種選擇參數大全 6. 【OpenCV】19 – OpenCV 的圖片自適應二值化,產生更好效果的黑白圖片!cv2.adaptiveThreshold 7. 【OpenCV】20 – OpenCV 的各種 Threshold 方法整理,Otsu’s Threshold 大津二值化,自動計算最佳閥值,做出最好的黑白效果圖! 8. 【OpenCV】26 – 銳化圖片,將模糊的圖片變得更清晰吧! sharpen images ⭐冷門應用篇⭐: 1. 【OpenCV】python OpenCV 分析影像模糊程度 檢測圖片模糊 blur sample code (內含範例程式碼) 2. 【OpenCV】21 – OpenCV 也有 photoshop 的魔術棒工具?! 漫水填充法 cv2.floodFill (Magic Wand Tool) 3. 【OpenCV】27 – 顏色映射 – OpenCV 內建的自動配色?! auto recolor images, cv2.applyColorMap ⭐影片處理篇⭐: 1. 【OpenCV】OpenCV 利用 python OpenCV 將圖片製作成一部影片 (內附程式碼) make video from images 2. 【OpenCV】OpenCV 利用 python OpenCV 將一部影片拆成一張張圖片 sample code (內附程式碼) get images from video 3. 【OpenCV】用 OpenCV 開啟 rtsp 即時影像串流 sample code (內含範例程式碼) – python OpenCV rtsp 4. 【OpenCV】python pyinotify video player 利用 OpenCV + inotify 製作即時影片播放器 sample code (內含範例程式碼) ⭐綜合應用篇⭐: 1. 【OpenCV】10 – 日系濾鏡總集篇,運用 OpenCV 製作屬於自己的濾鏡吧 (內含可於網頁上直接完成濾鏡的 colab ) 2. 【OpenCV】22 – 綜合運用1,用 OpenCV 來P圖囉! 來運用各種之前學習的各種東西吧! merge two images 3. 【OpenCV】23 – 綜合運用2,(資料標註) 用 OpenCV 來製作一個標記點小工具吧! 滑鼠與視窗控制 label points 4. 【OpenCV】24 – 綜合運用3,(應用app) 用 OpenCV 來製作一個照片文件掃描機吧! photo scanner 透視投影 5. 【OpenCV】25 – 綜合運用4,用 OpenCV 來把圖片p到各種奇怪的地方吧! 透視投影 cv2.warpPerspective, merge two images 6. 【OpenCV】28 – Final Project v1,於是沒錢買ps的我,開發了自己的photoshop,我的天啊 My photoshop made by OpenCV 7. 【OpenCV】29 – Final Project v2,於是沒錢買ps的我,開發了自己的photoshop,我的天啊 My photoshop made by OpenCV 8. 【OpenCV】30 – Final Project v3,於是沒錢買ps的我,開發了自己的photoshop,我的天啊 My photoshop made by OpenCV 9. 【OpenCV】用 python OpenCV 計算 iou 的方法 (內附範例程式碼) sample code ⭐【喜歡我的文章嗎? 歡迎幫我按讚~ 讓基金會請創作者喝一杯咖啡! 】
如果喜歡我的文章,請幫我在下方【按五下Like 】 (Google, Facebook 免註冊 ),會由 「LikeCoin 」 贊助作者鼓勵繼續創作,讀者們「只需幫忙按讚,完全不用出錢 」哦!