# OpenCV
[TOC]
## 甚麼是OpenCV
> Open Source Computer Vision Library
- 開源電腦視覺函示庫
- 可以用各種不同語言(如Java, Python, C/C++)進行搭配撰寫
---
## 如何在VScode使用python安裝opencv
1. 下載[VScode](https://code.visualstudio.com/Download)

2. 下載[python](https://www.python.org/downloads/)

需要再安裝的時候點選`Add python.exe to PATH`

3. 安裝完PYTHON後,開CMD輸入`python`,成功的畫面

5. 隨意新增一個.py的檔案
6. 執行後在終端機輸入 `pip install opencv-python`
7. 安裝完成
---
## 在VScode進行簡單的opencv測試
``` python=
import cv2
img=cv2.imread('Download.png') # 讀圖片,小括弧裡放檔案名
cv2.imshow('test',img) # 顯示圖片 ('1',2) 1是視窗名稱 2是變數
cv2.waitKey(1000) # 視窗停留1000ms
```

+ 選擇執行python檔案,才可以看到視窗出現
---
## Opencv-EdgeDectection(Canny)

```python=
import cv2
filename= './Picture/Download.png' # 相對路徑 ./1/2 1是目前所在路徑下的資料夾 2是檔案名
img=cv2.imread(filename) # 讀圖片,小括弧裡放檔案名
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 將圖片取灰階
edge = cv2.Canny(img_gray,100,200) # 取邊緣(灰階圖檔,,)
cv2.imwrite('edge.png',edge) # 儲存圖片('1',2) 1是檔名 2要存檔的變數名稱
cv2.imshow('test',edge) # 顯示圖片 ('1',2) 1是視窗名稱 2是變數
cv2.waitKey(0) # 持續等待至使用者按下按鍵為止
cv2.destroyAllWindows() # 關閉所有opencv的視窗,如果只要關閉特定視窗 ex:cv2.destroyAllWindows('視窗名')
```


---
## Opencv-EdgeDectection(Sobel)
```python=
import cv2
filename = './Picture/vendi.jpg'
img = cv2.imread(filename)
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
edge = cv2.Sobel(img_gray,-1,1,1,1,7)
cv2.imshow('test',edge)
cv2.imwrite('Picture/edge1_sobel.png',edge)
cv2.waitKey(0)
cv2.destroyAllWindows()
```


## 參考資料
+ [OpenCV 基礎篇-邊緣檢測(edge detection)](https://hackmd.io/@cws0701/SJiFl5Ghq)