一览徒、OpenCV簡(jiǎn)介
https://pypi.org/project/opencv-python/
https://opencv.org/releases.html
文檔:https://docs.opencv.org/3.0-beta/modules/refman.html
????OpenCV是一個(gè)基于BSD許可(開源)發(fā)行的跨平臺(tái)計(jì)算機(jī)視覺(jué)庫(kù)紊选,可以運(yùn)行在Linux、Windows、Android和Mac OS操作系統(tǒng)上窄赋。它輕量級(jí)而且高效——由一系列 C 函數(shù)和少量 C++ 類構(gòu)成僚纷,同時(shí)提供了Python、Ruby念赶、MATLAB等語(yǔ)言的接口础钠,實(shí)現(xiàn)了圖像處理和計(jì)算機(jī)視覺(jué)方面的很多通用算法。 OpenCV用C++語(yǔ)言編寫叉谜,它的主要接口也是C++語(yǔ)言旗吁,但是依然保留了大量的C語(yǔ)言接口。
????在計(jì)算機(jī)視覺(jué)項(xiàng)目的開發(fā)中停局,OpenCV作為較大眾的開源庫(kù)很钓,擁有了豐富的常用圖像處理函數(shù)庫(kù),采用C/C++語(yǔ)言編寫董栽,可以運(yùn)行在Linux/Windows/Mac等操作系統(tǒng)上码倦,能夠快速的實(shí)現(xiàn)一些圖像處理和識(shí)別的任務(wù)。此外锭碳,OpenCV還提供了Java袁稽、python、cuda等的使用接口工禾、機(jī)器學(xué)習(xí)的基礎(chǔ)算法調(diào)用运提,從而使得圖像處理和圖像分析變得更加易于上手,讓開發(fā)人員更多的精力花在算法的設(shè)計(jì)上闻葵。
二民泵、OpenCV應(yīng)用領(lǐng)域
計(jì)算機(jī)視覺(jué)領(lǐng)域方向
1)、人機(jī)互動(dòng)
2)槽畔、物體識(shí)別
3)栈妆、圖像分割
4)、人臉識(shí)別
5)、動(dòng)作識(shí)別
6)鳞尔、運(yùn)動(dòng)跟蹤
7)嬉橙、機(jī)器人
8)、運(yùn)動(dòng)分析
9)寥假、機(jī)器視覺(jué)
10)市框、結(jié)構(gòu)分析
11)、汽車安全駕駛計(jì)算機(jī)操作底層技術(shù)
圖像數(shù)據(jù)的操作: 分配糕韧、釋放枫振、復(fù)制、設(shè)置和轉(zhuǎn)換萤彩。 圖像是視頻的輸入輸出I/O 粪滤,文件與攝像頭的輸入、圖像和視頻文件輸出)雀扶。
矩陣和向量的操作以及線性代數(shù)的算法程序:矩陣積杖小、解方程、特征值以及奇異值等愚墓。
各種動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu):列表予权、隊(duì)列、集合转绷、樹伟件、圖等。
基本的數(shù)字圖像處理:濾波议经、邊緣檢測(cè)、角點(diǎn)檢測(cè)谴返、采樣與差值煞肾、色彩轉(zhuǎn)換、形態(tài)操作嗓袱、直方圖籍救、圖像金字塔等。
結(jié)構(gòu)分析:連接部件渠抹、輪廓處理蝙昙、距離變換、各自距計(jì)算梧却、模板匹配奇颠、Hough變換、多邊形逼近放航、直線擬合烈拒、橢圓擬合、Delaunay 三角劃分等。
攝像頭定標(biāo):發(fā)現(xiàn)與跟蹤定標(biāo)模式荆几、定標(biāo)吓妆、基本矩陣估計(jì)、齊次矩陣估計(jì)吨铸、立體對(duì)應(yīng)行拢。
運(yùn)動(dòng)分析:光流、運(yùn)動(dòng)分割诞吱、跟蹤舟奠。
目標(biāo)識(shí)別:特征法、隱馬爾可夫模型:HMM狐胎。
基本的GUI:圖像與視頻顯示鸭栖、鍵盤和鼠標(biāo)事件處理、滾動(dòng)條握巢。
圖像標(biāo)注:線晕鹊、二次曲線、多邊形暴浦、畫文字溅话。
三、安裝OpenCV的的兩種方法-
下載地址:
https://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv
image.png
使用whl文件法:
(base) C:\Users\Administrator>pip install opencv_python-4.0.1-cp37-cp37m-win_amd
64.whl
直接命令法
pip install opencv-python -
anaconda 安裝
anaconda 安裝
四歌焦、Python調(diào)用攝相頭
# -*- coding: UTF8 -*-
import cv2 as cv
def video_test():
# 打開0號(hào)攝像頭飞几,捕捉該攝像頭實(shí)時(shí)信息
# 參數(shù)0代表攝像頭的編號(hào)
# 有多個(gè)攝像頭的情況下,可用編號(hào)打開攝像頭
# 若是加載視頻独撇,則將參數(shù)改為視頻路徑屑墨,cv.VideoCapture加載視頻是沒(méi)有聲音的,OpenCV只對(duì)視頻的每一幀進(jìn)行分析
capture = cv.VideoCapture(0)
while (True):
# 獲取視頻的返回值 ref 和視頻中的每一幀 frame
ref, frame = capture.read()
# 加入該段代碼將使拍出來(lái)的畫面呈現(xiàn)鏡像效果
# 第二個(gè)參數(shù)為視頻是否上下顛倒 0為上下顛倒 1為不進(jìn)行上下顛倒
frame = cv.flip(frame, 1)
# 將每一幀在窗口中顯示出來(lái)
cv.imshow("video", frame)
# 設(shè)置視頻刷新頻率纷铣,單位為毫秒
# 返回值為鍵盤按鍵的值
c = cv.waitKey(50)
# 27為 Esc 按鍵的返回值
if c == 27:
break
video_test()
# 等待用戶操作
cv.waitKey(0)
# 釋放所有窗口
cv.destroyAllWindows()