豐臺區(qū)社會建設(shè)工作辦公室網(wǎng)站建站平臺在線提交功能
通過本套課程,可以學到:
1.opencv的基本操作
2.兩個案例,目標追蹤&人臉識別
對重點內(nèi)容,我會提示,包括我再準備這套課程過程中遇到的坑點!
最后代碼我會放到git上,章節(jié)順序一致:https://github.com/justinge/opencv_tutorial.git
系列文章目錄
第1章 Opencv 圖像基礎(chǔ) 和 argparse模塊
第2章 Opencv 讀取、保存圖片和視頻
第3章 Opencv 圖像的8種變換
第4章 Opencv 直方圖
第5章 Opencv 畫出基本圖形以及顯示文本
第6章 Opencv 人臉檢測(Haar/dlib) & 關(guān)鍵點檢測
第7章 Opencv 目標跟蹤
第8章 Opencv 人臉識別
文章目錄
- 系列文章目錄
- 1 知識點
- 1.1 基本概念
- 1.2. 坐標系
- 1.3 基本操作
- 1.4 BGR順序
- 2. 實際應(yīng)用
- 2.1 對待彩色圖
- 2.2 用plt的方式顯示圖片
- 3. argparse模塊
- 3.1 使用方式
- 總結(jié)
1 知識點
1.1 基本概念
像素:計算機屏幕上所能顯示的最小單位。用來表示圖像的單位。
RGB,R : Red,G : Green,B : Blue,范圍0~255。
1.2. 坐標系
這個logo像素是:18 X 20 = 360 pixels
坐標系的原點(0,0)在左上角,每一個點的坐標是:
(height, width, channel)。
1.3 基本操作
基于彩色圖片
- 讀取圖片: cv2.imread()
- 讀取圖片的形狀: img.shape. 返回一個(rows,heights,channels) 注意和pytorch不同
- 獲取圖片大小: img.size, 返回 rowsheightschannels.
- 顯示圖片:cv2.imshow()
- 等待:cv2.waitKey(0)
- 關(guān)閉:cv2.destroyAllWindows()
基于灰度圖片
- 讀取圖片: cv2.imread(img,cv2.IMREAD_GRAYSCALE)
- 獲取圖片形狀:img.shape,返回一個(rows,heights), 注意這里沒有channels了 因為就一個通道了.
1.4 BGR順序
opencv的 channel順序是BGR, pillow模塊和pytorch都是RGB的,這個需要注意,另外還有channels=4的一種格式的圖片.png的,讀取的時候需要轉(zhuǎn)成三維的,反正吧,不是3channel,就轉(zhuǎn)成3channel是個好習慣. 一般框架都會有這一步.
一個像素點也是有三個值的.
2. 實際應(yīng)用
2.1 對待彩色圖
import cv2
img = cv2.imread("../images/children.jpg")
# 顯示圖片
cv2.imshow('image1',img)
# 把一塊寫成紅色
img[6:40,6:40] = (0,0,255)
cv2.imshow('image2',img)
# 等待
cv2.waitKey(0)
# 關(guān)閉所有窗口
cv2.destroyAllWindows()
給logo的顏色換個順序
2.2 用plt的方式顯示圖片
import matplotlib.pyplot as plt
plt.subplot(121)
plt.imshow(img_logo)
plt.subplot(122)
plt.imshow(img_logo_new)
plt.show()
3. argparse模塊
看名字 argparse = arg+parse 也就是命令行參數(shù)解析的意思
argparse模塊使編寫用戶友好的命令行接口變得容易,程序定義了它需要的參數(shù),而argparse將找出如何從sys.argv中解析這些參數(shù),argparse模塊還會自動生成幫助和使用消息,并在用戶給程序提供無效參數(shù)時發(fā)出錯誤信息。
3.1 使用方式
import argparse # 導(dǎo)入庫
parser = argparse.ArgumentParser() # 獲取所有參數(shù)
parser.add_argument(“-n1”, “--number one”, help=“第一個參數(shù)”, type=int) # 添加參數(shù)1
parser.add_argument(“-n2”, “--number two”, help=“第二個參數(shù)”, type=int) # 添加參數(shù)2
args = parser.parse_args() # 解析所有參數(shù)
(1)官網(wǎng)教程1:
https://docs.python.org/3/howto/argparse.html
(2)官網(wǎng)教程2:https://docs.python.org/3/library/argparse.html#module-argparse
總結(jié)
## 兩種方式來挑整通道順序
img_logo_new = cv2.cvtColor(img_logo, cv2.COLOR_BGR2RGB) # BGR -> RGB## 手動方式轉(zhuǎn)成RGB
b,g,r = cv2.split(img_logo)
img_new = cv2.merge([r, g, b])
git地址:https://github.com/justinge/opencv_tutorial.git