利用python打開攝像頭及顏色檢測方法
最近兩周由于忙于個(gè)人項(xiàng)目,一直未發(fā)言了,實(shí)在是太荒涼了。。。。,上周由于項(xiàng)目,見到Python的應(yīng)用極為廣泛,用起來也特別順手,于是小編也開始著手學(xué)習(xí)Python,…下面我就匯報(bào)下今天的學(xué)習(xí)成果吧
小編運(yùn)行環(huán)境unbuntu 14.0.4
首先我們先安裝一下Python唄,我用的2.7,其實(shí)特別簡單,一行指令就OK
sudo apt-get install python-dev
一般安裝系統(tǒng)的時(shí)候其實(shí)python已經(jīng)自帶了,這步基本可以不用做,OK,我們繼續(xù)往下走吧,安裝python-opencv ,稍后我們需要用到opencv的庫,一行指令即可,這也是小編特別喜歡linux的原因:
sudo apt-get install python-opencv
完成之后我們開始操作吧,首先同樣的我們打開攝像頭露個(gè)臉唄,不多說,上代碼, vim pythonpractice.py 打開vim,copy以下代碼即可(友情提示 python是有嚴(yán)格的縮進(jìn)的,下面我都是四個(gè)空格縮進(jìn),各位不要復(fù)制錯了):lo
lmport cv2 import numpy as np#添加模塊和矩陣模塊 cap=cv2.VideoCapture(0) #打開攝像頭,若打開本地視頻,同opencv一樣,只需將0換成("×××.avi") while(1): # get a frame ret, frame = cap.read() # show a frame cv2.imshow("capture", frame) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows() #釋放并銷毀窗口
保存退出
python pythonpractice.py
小臉蛋即可出現(xiàn)在你的屏幕上了,下面稍微添加幾行有意思的代碼吧,實(shí)現(xiàn)藍(lán)色背景檢測,我這有瓶藍(lán)色脈動,正好做個(gè)小實(shí)驗(yàn)。
import cv2 import numpy as np cap = cv2.VideoCapture(0)# set blue thresh lower_blue=np.array([78,43,46]) upper_blue=np.array([110,255,255]) while(1): # get a frame and show ret, frame = cap.read() cv2.imshow('Capture', frame) # change to hsv model hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) # get mask mask = cv2.inRange(hsv, lower_blue, upper_blue) cv2.imshow('Mask', mask) # detect blue res = cv2.bitwise_and(frame, frame, mask=mask) cv2.imshow('Result', res) if cv2.waitKey(1) & 0xFF == ord('q'): breakcap.release() cv2.destroyAllWindows()
同樣python pythonpractice.py 運(yùn)行一下,可以把手機(jī)換成藍(lán)色背景檢測以下,下面時(shí)間就交給各位理解了,代碼很簡單,只有簡單的幾行程序。
下面有個(gè)復(fù)雜點(diǎn)顏色識別的代碼
#!/usr/bin/python # -*- coding: utf-8 -*- import cv2 import numpy as np import time readlower=np.array([156,179,144]) readupper=np.array([180,255,255]) readlower1 = np.array([0, 128, 146]) readupper2 = np.array([5, 255, 255]) lowerarry=[[readlower,readupper,'red'],[readlower1,readupper2,'red1']] capture=cv2.VideoCapture('4.mp4') while True: ret,frame=capture.read() print frame.shape frame=cv2.resize(frame,(640,480)) if ret==False: print("video is erro") #cv2.imshow('xiaorun',frame) hsv=cv2.cvtColor(frame,cv2.COLOR_BGR2HSV) for colormin,colermax,name in lowerarry: mask=cv2.inRange(hsv,colormin,colermax) #res = cv2.bitwise_and(frame, frame, mask=mask) #mask=cv2.erode(mask,None,iterations=1) mask=cv2.dilate(mask,None,iterations=25) ret, binary = cv2.threshold(mask,15, 255, cv2.THRESH_BINARY) cv2.imshow('result',binary) kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (21, 7)) closed = cv2.morphologyEx(binary, cv2.MORPH_CLOSE, kernel) cv2.imshow('closed', closed) #erode = cv2.erode(closed, None, iterations=4) #cv2.imshow('erode', erode) dilate = cv2.dilate(closed, None, iterations=50) cv2.imshow('dilate', dilate) _,contours, hierarchy = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) #res=_.copy() for con in contours: x, y, w, h = cv2.boundingRect(con) # 將輪廓分解為識別對象的左上角坐標(biāo)和寬、高 # 在圖像上畫上矩形(圖片、左上角坐標(biāo)、右下角坐標(biāo)、顏色、線條寬度) cv2.rectangle(frame, (x, y), (x + w, y + h), (255, 0,0), 3) cv2.imshow('res',frame) key=cv2.waitKey(1) if key==ord('q'): break
小編只是想說明以下,一定要學(xué)以致用,任何一種編程語言都是倒騰兩天就直接上手的,按部就班的學(xué)習(xí)語法,那樣不知何時(shí)才能出師了,祝各位玩得high在機(jī)器視覺上
以上這篇利用python打開攝像頭及顏色檢測方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- python在linux中輸出帶顏色的文字的方法
- Python+matplotlib繪制不同大小和顏色散點(diǎn)圖實(shí)例
- Python通過PIL獲取圖片主要顏色并和顏色庫進(jìn)行對比的方法
- python獲取圖片顏色信息的方法
- python實(shí)現(xiàn)顏色rgb和hex相互轉(zhuǎn)換的函數(shù)
- 利用Python實(shí)現(xiàn)顏色色值轉(zhuǎn)換的小工具
- python opencv檢測目標(biāo)顏色的實(shí)例講解
- python中matplotlib的顏色及線條控制的示例
- Python實(shí)現(xiàn)PS圖像調(diào)整顏色梯度效果示例
- Python圖像處理之顏色的定義與使用分析
相關(guān)文章
解決python3 json數(shù)據(jù)包含中文的讀寫問題
今天小編就為大家分享一篇解決python3 json數(shù)據(jù)包含中文的讀寫問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05pytorch 實(shí)現(xiàn)L2和L1正則化regularization的操作
這篇文章主要介紹了pytorch 實(shí)現(xiàn)L2和L1正則化regularization的操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03