---
# System prepended metadata

title: OpenCV 基礎篇
tags: [OpenCV]

---

###### 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()    #關掉顯示圖片
```
![](https://i.imgur.com/tNMwwWj.png)

**有興趣區域(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()
```
![](https://i.imgur.com/cGmcvE9.png)


```python=
import cv2 #讀取灰階lena
img_gray = cv2.imread('lenacolor.png', cv2.IMREAD_GRAYSCALE)
cv2.imshow("lena_gray",img_gray) 
cv2.waitKey(0)
cv2.destroyAllWindows()
```
![](https://i.imgur.com/L4i55co.png)

