0%

opencv 筆記

 

helloworld

先在自己的 base 安裝 nb_conda_kernels 他會掃描全部的 conda 環境然後讓 jupyter kernel 加進去, 搞 python 裝環境真的超煩.. 整個心態炸裂

1
2
3
4
5
6
7
8
conda activate base
conda install nb_conda_kernels

# 切到 cv2 這個環境安裝 ipykernel
conda activate cv2
conda install ipykernel
conda install opencv
conda install matplotlib

接著用 jupyter 開啟, 看是喜歡 notebook or lab 都可以

1
2
jupyter notebook
jupyter-lab

helloworld 這裡的 %matplotlib inline 可以直接顯示圖片在 cell 上面
opencv 預設的顏色通道是 bgr 而 matplotlib 則是 rgb
所以需要呼叫 cv2.cvtColor(marmot, cv2.COLOR_BGR2RGB) 先轉為 rgb

1
2
3
4
5
6
7
import cv2
import matplotlib.pyplot as plt
%matplotlib inline
marmot = cv2.imread('marmot.jpg')
marmot = cv2.cvtColor(marmot, cv2.COLOR_BGR2RGB)
plt.imshow(marmot)
plt.show()

如果想讀成灰度的話需要補上 cv2.IMREAD_GRAYSCALE
接著 matplotlib 要加入 colormap 參數 cmap

可以到這邊來找喜歡的 colormap
以前最常用 jet 這樣就可以得到一隻彩色土撥鼠 XD

1
2
3
4
5
6
marmot = cv2.imread('marmot.jpg', cv2.IMREAD_GRAYSCALE)
plt.imshow(marmot, cmap='gray')
plt.show()

plt.imshow(marmot, cmap='jet')
plt.show()

ROI (Region of Interest)

1
2
3
4
5
6
# 先 Y 後 X
y_start, y_end = 50, 250
x_start, x_end = 150, 500
roi_marmot = marmot[y_start:y_end,x_start:x_end]
plt.imshow(roi_marmot, cmap='jet')
plt.show()

可以用 split 分出三個通道的 array 然後調整數值就可以弄出一隻憂鬱的老鼠 LOL

1
2
3
4
5
6
7
8
marmot = cv2.imread('marmot.jpg')
b,g,r = cv2.split(marmot)
b[:] = 200

deep_blue = cv2.merge((b,g,r))
deep_blue = cv2.cvtColor(deep_blue, cv2.COLOR_BGR2RGB)
plt.imshow(deep_blue)
plt.show()
關閉