---
# System prepended metadata

title: OpenCV
tags: [專題實作]

---

# OpenCV
[TOC]

## 甚麼是OpenCV
> Open Source Computer Vision Library
- 開源電腦視覺函示庫
- 可以用各種不同語言(如Java, Python, C/C++)進行搭配撰寫
---

## 如何在VScode使用python安裝opencv
1. 下載[VScode](https://code.visualstudio.com/Download)

![](https://hackmd.io/_uploads/H1f7-zwka.png)

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

![](https://hackmd.io/_uploads/rJG5SfPkp.png)

需要再安裝的時候點選`Add python.exe to PATH`
![](https://hackmd.io/_uploads/HJdj8Gvk6.png)


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

![](https://hackmd.io/_uploads/SJFeUfDkT.png)

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
```

![](https://hackmd.io/_uploads/Hyq8tViya.png =50%x)
+ 選擇執行python檔案，才可以看到視窗出現
---

##  Opencv-EdgeDectection(Canny)

![](https://hackmd.io/_uploads/HkIU6B2kT.png =60%x)

```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('視窗名')
```
![](https://hackmd.io/_uploads/HJt-pL2y6.png =20%x)

![](https://hackmd.io/_uploads/ryeepIhJ6.png =20%x)

---
##  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()
```
![](https://hackmd.io/_uploads/HJt-pL2y6.png =20%x)
![](https://hackmd.io/_uploads/BkDNoDhka.png =20%x)


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