---
tags: 機器視覺, OpenCV, 勇哥, Yungger, Python
---
:::info
# Python+OpenCV : 第三課 圖像
:::
:::warning
### 目錄
[TOC]
:::
---
## <font color="GREEN">讀取</font>
```python
# 三原色的彩色圖片,而忽略透明度的 channel
img = cv2.imread(img_input, cv.IMREAD_COLOR)
# 灰階格式圖片
img = cv2.imread(img_input, cv.IMREAD_GRAYSCALE)
# 讀取圖片中所有的 channels,包含透明度的 channel。
img = cv2.imread(img_input, cv.IMREAD_UNCHANGED)
```
## <font color="GREEN">展示</font>
```python
# 建立一個展示視窗, 且可以自由縮放大小
cv2.namedWindow('window name', cv.WINDOW_NORMAL)
# Tips: 若使用 Mac 開發, 卻發現執行後展示視窗一直都躲在編輯器背後看不見時, 可增加此行
if os.name != 'nt':
os.system('''/usr/bin/osascript -e 'tell app "Finder" to set frontmost of process "python" to true' ''')
# 開啟視窗, 並載入圖片。在預設的狀況下,以 cv.imshow 所會依據圖片來自動調整大小
cv2.imshow('window name', img)
# 等待時間(毫秒),若設定為 0 就表示持續等待至使用者按下按鍵為止
cv2.waitKey(0)
# 按下任意鍵則關閉所有或指定的視窗
cv2.destroyAllWindows() # 或 cv.destroyWindow('window name')
```
:::info





:::
## <font color="GREEN">寫入</font>
```python
# 寫入不同圖檔格式
cv2.imwrite('output.jpg', img)
cv2.imwrite('output.png', img)
cv2.imwrite('output.tiff', img)
```
## <font color="GREEN">轉換</font>
```python
# 改變大小
cv2.resize(img, (w, h))
# 裁剪圖片
img = img[y:y+h, x:x+w]
# 鏡射圖片:mirror = 0:上下, 1:左右, -1:Flip Both
cv2.flip(img, mirror)
# 旋轉圖片
M = cv2.getRotationMatrix2D(center, angle, scale)
cv2.warpAffine(img, M, (w, h))
```




---
:::success
#### 如果覺得此文對您有幫助, 也願意鼓勵勇哥的繼續創作, 點此 [加油一下](https://www.buymeacoffee.com/yungger) 😘 😘 !!
:::