###### tags: `OpenCV`
# OpenCV 基礎篇
* OpenCV的全稱是Open Source Computer Vision Library,是一個跨平台的電腦視覺庫。
* OpenCV可用於開發即時的圖像處理、電腦視覺以及圖型識別程式。
**應用領域**
OpenCV可用於解決如下領域的問題:
* 擴增實境
* 臉部辨識
* 手勢辨識
* 人機互動
* 動作辨識
* 運動跟蹤
* 物體辨識
* 圖像分割
* 機器人
**安裝一下**
<!pip install opencv-contrib-python>
**opencv對於位置的表達方式**
OpenCV用的是top-left corner系統,也就是左上角會是(0,0)
往右移,X會增加,往下移,y會增加。
**opencv對於顏色空間的表達方式**
* opencv表達顏色空間是BGR mode 而不是 RGB mode
* 如果是png檔案,會多一個透明層,那就是BGRA,A就是透明層
**cv2.imread用兩個參數**
1. 檔案名稱
2. 讀取模式-
cv2.IMREAD_COLOR, #預設default值。載入一張彩色圖片,忽視它的透明度。
cv2.IMREAD_GRAYSCALE, #載入一張灰度圖。
cv2.IMREAD_UNCHANGED, #載入影象,包括它的Alpha 通道(Alpha 表示圖片的透明度)。
也可以簡單使用 1,0,-1 代替,效果是相同的。
支援檔案格式包括.bmp, .jpeg, .jpg, .png, .tiff, and .tif
```python=
import cv2
img = cv2.imread("lenacolor.png") #imread讀取照片檔名
cv2.imshow("lena",img) #imshow顯示圖片,帶兩個參數,一個是顯示頁的標題,一個是顯示的圖片
cv2.waitKey(0) #要寫這句,不然看不到照片,要按鈕才跳掉,可以設0
cv2.destroyAllWindows() #關掉顯示圖片
```

**有興趣區域(ROI)**
在影像處理過程中,對某一特定區域有興趣,稱
為有興趣區域(Region of Interest,ROI)
```python=
import cv2
a=cv2.imread("lenacolor.png",cv2.IMREAD_UNCHANGED)
#cv2.IMREAD_UNCHANGED讀取圖片中所有的 channels,包含透明度的 channel
face=a[220:400,250:350] #擷取特徵lena的臉
#220:400=>照片的高,250:350=>照片的寬(原點為左上0,0)
cv2.imshow("original",a)
cv2.imshow("face",face)
cv2.waitKey(0)
cv2.destroyAllWindows()
```

```python=
import cv2 #讀取灰階lena
img_gray = cv2.imread('lenacolor.png', cv2.IMREAD_GRAYSCALE)
cv2.imshow("lena_gray",img_gray)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
