王冉,孟磊
(西安職業(yè)技術(shù)學院,陜西 西安 710077)
隨著城市人口的增加,學校、醫(yī)院、社區(qū)、商場等人流量比較大場合,安全問題成為重點的研究方向,視頻監(jiān)控成為主流趨勢,視頻監(jiān)控的關(guān)鍵技術(shù)之一即為物體及人體檢測及識別,本文就識別技術(shù)中的圖像處理、視頻流處理、數(shù)字識別等關(guān)鍵技術(shù)加以分析和驗證。
圖像識別技術(shù)主要針對獲取的圖片進行:(1)圖片的獲取(2)樣本圖片及非樣本圖片的分類(3)圖片的預處理(4)特征提取(5)建立模型對圖片中的目標物體(本文所列舉的就是手寫數(shù)字)進行識別。本文應用的軟件包括Pycharm、Anaconda 等,應用到的庫包括python3.6、numpy、tensorboard、tensorflow 等。
圖形繪制可以使用import<庫名>as<庫別名>,代碼如下:
import cv2
import numpy as np
newtInfo=(500,500,3)
dst=np.zeros(newtInfo,np.uint8)
cv2.rectangle(dst,(50,100),(200,300),(0,0,255),-1)
cv2.circle(dst,(250,250),(50),(255,0,0),2)
cv2.ellipse(dst,(256,256),(150,100),0,0,180,(0,2 55,0),-1)
points = np.array([[150,50],[140,140],[200,170], [250,250],[150,50]])
points = points.reshape((-1,1,2))
cv2.polylines(dst,[points],True,(0,255,255),5)
cv2.imshow("tutu",dst)
cv2.waitKey(0)
繪制圖形效果如圖1 所示。

圖1 繪制圖形示例
邊緣檢測是圖像處理和計算機視覺中的基本問題,邊緣檢測的目的是標識數(shù)字圖像中亮度變化明顯的點,本文中圖片邊緣檢測代碼如下:
import cv2
import numpy as np
img = cv2.imread("q.jpeg",1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
dst = cv2.Canny(img,50,50)
cv2.imshow("dst",dst)
cv2.waitKey(0)
檢測的樣本圖形為圖2,經(jīng)過處理的圖形為圖3。

圖2 圖片邊緣檢測原圖

圖3 圖片邊緣檢測示例
視頻的獲取有很多種方法,網(wǎng)絡(luò)獲取、自由拍攝,為了測試的準確性需要視頻盡可能的清晰,將獲取的視頻再進行分解為圖片,就可以獲取測試所需要的樣本。
視頻流分解為圖片的代碼如下:
import cv2
cap = cv2.VideoCapture("q.mp4")
isOpened = cap.isOpened
print(isOpened)
fps = cap.get(cv2.CAP_PROP_FPS)
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
print(fps,width,height)
i = 0
while(isOpened):
if i == 13:
break;
else:
i = i+1
fileName = "image"+str(i)+".jpg"
print(fileName)
if flag == True:
cv2.imwrite(fileName, [cv2.IMWRITE_JPEG_QUALITY, 100])
print("end")
其運行結(jié)果即將視頻分解為13 張待測試的圖片,在某些情況下也需要將圖片合成為視頻。
在做數(shù)據(jù)的訓練前,應該找出測試集,MNIST 可以幫助我們完成這項任務。為了測試的速度和準確率,在識別手寫數(shù)字是0~9 中的某一個數(shù)前,先設(shè)定識別數(shù)字“5”和非“5。
MNIST 數(shù)據(jù)集是手寫0 到9 的灰度圖像,輸入圖像數(shù)據(jù)28 * 28 的灰度圖,形狀是[1, 28, 28],如果圖像是32*32 的彩色圖,那么輸入的形狀是[3,32,32],因為灰度圖只有一個通道,而彩色圖有RGB 三個通道。
例如要識別數(shù)字“5”,出現(xiàn)以下請況(1)將數(shù)字“5”識別為數(shù)字“5”;(2)將其他數(shù)字識別為數(shù)字“5”,“3”“6”“8”這些和“5”相近的數(shù)字都有可能被識別為數(shù)字“5”;(3)將數(shù)字“5”沒有識別出來,這種錯誤的原因就是將所有類似“5”的數(shù)字劃分為非“5”。經(jīng)過分析,在數(shù)字識別的過程中,盡可能的識別為真,進而再根據(jù)易混淆數(shù)字的特征進行下一級分類器的設(shè)置,進而提高分析的準確率。
為了智能識別數(shù)字本文進行了研究和測試,為進一步研究如何統(tǒng)計高密度人群提供研究基礎(chǔ),研究教師、實驗室、醫(yī)院、幼兒園等的人口數(shù)量,以及外來人口檢測實現(xiàn)智能監(jiān)控及預警是我們下一步的研究工作。