如何使用Python+OpenCV+Keras實(shí)現(xiàn)無口罩車輛駕駛員懲罰生成
將Flask與兩個(gè)模型和MongoDB集成以實(shí)現(xiàn)端到端流程我們創(chuàng)建了一個(gè)flask main.py,該flask鏈接到各種HTML模板,以從用戶那里獲取前端汽車駕駛員圖像的輸入。然后,該圖像由CNN模型處理,以在后端進(jìn)行口罩檢測,并且無論駕駛員是否戴口罩,結(jié)果都將顯示在HTML模板中。下面的代碼以圖像文件的形式從用戶那里獲取輸入,對(duì)圖像應(yīng)用各種預(yù)處理技術(shù),例如調(diào)整大小,灰度,重新排列圖像陣列,然后將圖像發(fā)送到已經(jīng)訓(xùn)練好的模型以確定輸出。@app.route('/', methods=['POST'])
def upload_file():
img_size=100
data=[]
uploaded_file = request.files['file']
result=''
if uploaded_file.filename 。 '':
filename = uploaded_file.filename
uploaded_file.save(os.path.join(app.config['UPLOAD_PATH'], filename))
img_path = os.path.join(app.config['UPLOAD_PATH'], filename)
print(img_path)
img=cv2.imread(img_path)
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
resized=cv2.resize(gray,(img_size,img_size))
data.a(chǎn)ppend(resized)
data=np.a(chǎn)rray(data)/255.0
data=np.reshape(data,(data.shape[0],img_size,img_size,1))
new_model = load_model('saved_model/my_model')
output = new_model.predict(data)
if output[0][0]>=0.5:
result = 'The person is Masked'
else:
result = 'The Person is Non Masked'
print(result)
return render_template('Show.html',result=result)
以下是HTML模板,該HTML模板作為上載圖像文件的一部分顯示給用戶。
下面是一個(gè)Html模板,當(dāng)POST方法在處理完圖像后發(fā)送結(jié)果時(shí)顯示,顯示駕駛員是否戴了口罩。
接下來,我們上傳車輛圖像,該圖像已被確定為駕駛員沒有戴口罩。車輛的圖像再次通過圖像預(yù)處理階段進(jìn)行處理,在該階段中,模型會(huì)嘗試從車牌中的車牌框中提取文本。@app.route('/Vehicle', methods=['POST'])
def table2():
uploaded_file = request.files['file']
result=''
if uploaded_file.filename 。 '':
path='static/car'
filename = uploaded_file.filename
uploaded_file.save(os.path.join(path, filename))
img_path = os.path.join(path, filename)
print(img_path)
img = cv2.imread(img_path,cv2.IMREAD_COLOR)
img = cv2.resize(img, (600,400) )
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
gray = cv2.bilateralFilter(gray, 13, 15, 15)
edged = cv2.Canny(gray, 30, 200)
contours = cv2.findContours(edged.copy(), cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
contours = imutils.grab_contours(contours)
contours = sorted(contours, key = cv2.contourArea, reverse = True)[:10]
screenCnt = None
for c in contours:
peri = cv2.a(chǎn)rcLength(c, True)
approx = cv2.a(chǎn)pproxPolyDP(c, 0.018 * peri, True)
if len(approx) == 4:
screenCnt = approx
break
if screenCnt is None:
detected = 0
print ("No contour detected")
else:
detected = 1
if detected == 1:
cv2.drawContours(img, [screenCnt], -1, (0, 0, 255), 3)
mask = np.zeros(gray.shape,np.uint8)
new_image = cv2.drawContours(mask,[screenCnt],0,255,-1,)
new_image = cv2.bitwise_and(img,img,mask=mask)
(x, y) = np.where(mask == 255)
(topx, topy) = (np.min(x), np.min(y))
(bottomx, bottomy) = (np.max(x), np.max(y))
Cropped = gray[topx:bottomx+1, topy:bottomy+1]
text = pytesseract.image_to_string(Cropped, config='--psm 11')
print("Detected license plate Number is:",text)
#text='GJW-1-15-A-1138'
print('"{}"'.format(text))
re.sub(r'[^-]',r'', text)
text = text.replace("", " ")
text = re.sub('[W_]+', '', text)
print(text)
print('"{}"'.format(text))
query1 = {"Number Plate": text}
print("0")
for doc in collection.find(query1):
doc1 = doc
Name=doc1['Name']
Address=doc1['Address']
License=doc1['License Number']
return render_template('Penalty.html',Name=Name,Address=Address,License=License)
以下是車輛圖像上傳頁面,該頁面接收用戶的輸入并處理車輛圖像以獲得車牌號(hào)文字。
提取車牌編號(hào)的文本后,我們需要使用車號(hào)牌查找車牌持有人的詳細(xì)信息,接下來我們將連接到MongoDB創(chuàng)建的名為License_Details的表。一旦獲得了車牌號(hào),名稱,地址等詳細(xì)信息,我們就可以生成罰款并將其顯示在HTML模板頁面上。
未來的工作與訓(xùn)練精度相比,口罩模型的測試精度要低得多。因此,未知數(shù)據(jù)集的錯(cuò)誤分類非常高。另外,我們需要努力提高基于OpenCV的車牌提取的準(zhǔn)確性,因?yàn)殄e(cuò)誤的關(guān)注區(qū)域可能會(huì)導(dǎo)致提取空的車牌文本。另外,可以進(jìn)一步改善前端,使其更具吸引力。參考
發(fā)表評(píng)論
請(qǐng)輸入評(píng)論內(nèi)容...
請(qǐng)輸入評(píng)論/評(píng)論長度6~500個(gè)字
最新活動(dòng)更多
-
即日-11.13立即報(bào)名>>> 【在線會(huì)議】多物理場仿真助跑新能源汽車
-
11月28日立即報(bào)名>>> 2024工程師系列—工業(yè)電子技術(shù)在線會(huì)議
-
12月19日立即報(bào)名>> 【線下會(huì)議】OFweek 2024(第九屆)物聯(lián)網(wǎng)產(chǎn)業(yè)大會(huì)
-
即日-12.26火熱報(bào)名中>> OFweek2024中國智造CIO在線峰會(huì)
-
即日-2025.8.1立即下載>> 《2024智能制造產(chǎn)業(yè)高端化、智能化、綠色化發(fā)展藍(lán)皮書》
-
精彩回顧立即查看>> 【限時(shí)免費(fèi)下載】TE暖通空調(diào)系統(tǒng)高效可靠的組件解決方案
推薦專題
- 1 【一周車話】沒有方向盤和踏板的車,你敢坐嗎?
- 2 特斯拉發(fā)布無人駕駛車,還未迎來“Chatgpt時(shí)刻”
- 3 特斯拉股價(jià)大跌15%:Robotaxi離落地還差一個(gè)蘿卜快跑
- 4 馬斯克給的“驚喜”夠嗎?
- 5 打完“價(jià)格戰(zhàn)”,大模型還要比什么?
- 6 馬斯克致敬“國產(chǎn)蘿卜”?
- 7 神經(jīng)網(wǎng)絡(luò),誰是盈利最強(qiáng)企業(yè)?
- 8 比蘋果偉大100倍!真正改寫人類歷史的智能產(chǎn)品降臨
- 9 諾獎(jiǎng)進(jìn)入“AI時(shí)代”,人類何去何從?
- 10 Open AI融資后成萬億獨(dú)角獸,AI人才之爭開啟
- 高級(jí)軟件工程師 廣東省/深圳市
- 自動(dòng)化高級(jí)工程師 廣東省/深圳市
- 光器件研發(fā)工程師 福建省/福州市
- 銷售總監(jiān)(光器件) 北京市/海淀區(qū)
- 激光器高級(jí)銷售經(jīng)理 上海市/虹口區(qū)
- 光器件物理工程師 北京市/海淀區(qū)
- 激光研發(fā)工程師 北京市/昌平區(qū)
- 技術(shù)專家 廣東省/江門市
- 封裝工程師 北京市/海淀區(qū)
- 結(jié)構(gòu)工程師 廣東省/深圳市