OpenCV 簡介,環(huán)境安裝( python )
簡介 :OpenCV是一個基于Apache2.0許可(開源)發(fā)行的跨平臺計算機(jī)視覺和機(jī)器學(xué)習(xí)軟件庫,可以運(yùn)行在Linux、Windows、Android和Mac OS操作系統(tǒng)上。它輕量級而且高效——由一系列 C 函數(shù)和少量 C++ 類構(gòu)成,同時提供了Python、Ruby、MATLAB等語言的接口,實現(xiàn)了圖像處理和計算機(jī)視覺方面的很多通用算法。
OpenCV用C++語言編寫,它具有C ++,Python,Java和MATLAB接口,并支持Windows,Linux,Android和Mac OS,OpenCV主要傾向于實時視覺應(yīng)用,并在可用時利用MMX和SSE指令,如今也提供對于C#、Ch、Ruby,GO的支持。
安裝( Python ) :在需要安裝的環(huán)境中直接輸入pip install opencv-python
目錄:
1 、讀取、顯示、保存圖像、讀取視頻
** 2 、繪制直線、矩形、圓、橢圓、多邊形、文本 **
3、圖像基本認(rèn)知:RGB、Gray、HSV等
4、通道分離與合并、色域轉(zhuǎn)換、像素運(yùn)算
5、案例總結(jié)(簡易調(diào)色板,簡易截圖工具,人臉檢測)
OpenCV****基本操作
1 、讀取、顯示、保存圖像、讀取視頻
在cv2.imshow()之后要跟著cv2.waitkey(),waitkey()控制著imshow的持續(xù)時間,當(dāng)imshow之后不跟waitkey時,只有一個空窗口一閃而過,相當(dāng)于沒有給imshow提供時間展示圖像。destroyAllWindows()為銷毀窗口。
def ReadImg():
# 創(chuàng)建窗口
cv2.namedWindow('demo',cv2.WINDOW_NORMAL)
# 調(diào)整窗口大小,(w,h)
cv2.resizeWindow('demo',500,300)
# 讀取圖像
img = cv2.imread("./images/test.jpg")
# 保存圖像
cv2.imwrite('./images/rewrite.jpg',img)
# 轉(zhuǎn)換灰度圖
# black_white = cv2.imread("./images/test.jpg",cv2.IMREAD_GRAYSCALE)
cv2.imshow("demo",img)
cv2.waitKey(0)
cv2.destroyAllWindows()
def ReadVideo():
# capture = cv.VideoCapture(0)
# 0是打開攝像頭,也可以是輸入視頻文件的路徑
capture = cv2.VideoCapture(0, cv2.CAP_DSHOW)
while True:
ret, frame = capture.read()
cv2.imshow("video", frame)
c = cv2.waitKey(10)
if c == 27: # 表示鍵盤輸入的是ESC
break
# video_demo()
img = cv2.imread("./images/test.jpg")
print(type(img))
print(img.shape)
#
# (369, 720, 3)
讀取的圖像以numpy存儲,img.shape返回圖像的高、寬。
2 、繪制直線、矩形、圓、橢圓、多邊形、文本
def DrawGraph():
# 創(chuàng)建一個純黑的背景
bg = np.zeros([500,500,3],np.uint8)
# 畫矩形,cv2.rectangle(img,左上角點,右下角點,顏色,線條寬度)
cv2.rectangle(bg,(0,0),(100,100),[0,255,0],2)
cv2.rectangle(bg,(100,100),(200,300),[0,0,255],2)
# 畫圓, cv2.circle(img,圓心,半徑,顏色,線條寬度)
cv2.circle(bg,(200,300),100,(255,0,0),2)
# 畫橢圓,cv2.ellipse(img,中心點,長軸短軸,傾斜角度,開始角度,結(jié)束角度,color,thickness)
cv2.ellipse(bg,(200,100),(100,50),90,0,360,color=(255,255,0),thickness=2)
cv2.ellipse(bg,(200,100),(50,100),0,90,180,color=(255,0,255),thickness=2)
# 寫文字,cv2.putText(img,"OpenCV",位置,字體,大小,顏色,寬度)
cv2.putText(bg,"OpenCV",(100,350),cv2.FONT_HERSHEY_SIMPLEX,2,(0,255,255),2)
# 繪制多邊形
pts = np.array([(300, 100), (260, 200), (390, 200)], np.int32)
cv2.polylines(bg,[pts],True,(0,255,0),2)
cv2.fillPoly(bg,[pts],(105,10,90))
# 展示
cv2.imshow("demo", bg)
cv2.waitKey(0)
cv2.destroyAllWindows()
示例
注:坐標(biāo)原點在圖像左上角
行數(shù),rows其實對應(yīng)于坐標(biāo)軸上的y,即表示的是圖像的高度,豎直方向;
列數(shù),cols對應(yīng)于坐標(biāo)軸上的x,即表示的是圖像的寬度,水平方向;
橢圓中旋轉(zhuǎn)為順時針旋轉(zhuǎn)。
-
matlab
+關(guān)注
關(guān)注
182文章
2960瀏覽量
230045 -
開源
+關(guān)注
關(guān)注
3文章
3229瀏覽量
42343 -
C++
+關(guān)注
關(guān)注
21文章
2102瀏覽量
73457 -
OpenCV
+關(guān)注
關(guān)注
29文章
625瀏覽量
41218 -
ruby
+關(guān)注
關(guān)注
0文章
44瀏覽量
3442
發(fā)布評論請先 登錄
相關(guān)推薦
評論