激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語(yǔ)言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - 通過 Python 和 OpenCV 實(shí)現(xiàn)目標(biāo)數(shù)量監(jiān)控

通過 Python 和 OpenCV 實(shí)現(xiàn)目標(biāo)數(shù)量監(jiān)控

2020-05-09 10:03Python學(xué)習(xí)啊 Python

這篇文章主要介紹了如何通過 Python 和 OpenCV 實(shí)現(xiàn)目標(biāo)數(shù)量監(jiān)控,本文通過實(shí)例代碼圖文的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

今天我們將利用python+OpenCV實(shí)現(xiàn)對(duì)視頻中物體數(shù)量的監(jiān)控,達(dá)到視頻監(jiān)控的效果,比如洗煤廠的監(jiān)控水龍頭的水柱顏色,當(dāng)水柱為黑色的超過了一半,那么將說明過濾網(wǎng)發(fā)生了故障。當(dāng)然不僅如此,我們看的是圖像視頻處理的技巧,你也可以將項(xiàng)目遷移到其他地方等,這僅僅是一個(gè)例子而已。我們知道計(jì)算機(jī)視覺中關(guān)于圖像識(shí)別有四大類任務(wù):

 

分類-Classification:解決“是什么?”的問題,即給定一張圖片或一段視頻判斷里面包含什么類別的目標(biāo)。

定位-Location:解決“在哪里?”的問題,即定位出這個(gè)目標(biāo)的的位置。

檢測(cè)-Detection:解決“是什么?在哪里?”的問題,即定位出這個(gè)目標(biāo)的的位置并且知道目標(biāo)物是什么。

分割-Segmentation:分為實(shí)例的分割(Instance-level)和場(chǎng)景分割(Scene-level),解決“每一個(gè)像素屬于哪個(gè)目標(biāo)物或場(chǎng)景”的問題。

而定位不僅需要找到物體的位置在哪里,還需要能夠統(tǒng)計(jì)目標(biāo)的數(shù)目以及物體狀態(tài)。

除了圖像分類以外,目標(biāo)檢驗(yàn)要解決問題的架構(gòu)難題是:

1.目標(biāo)有可能經(jīng)常出現(xiàn)在影像的任何方位;

2.目標(biāo)有各種有所不同的尺寸;

3.目標(biāo)有可能有各種有所不同的外形。

如果用矩形框來界定目的,則長(zhǎng)方形有有所不同的清晰度。由于目的的清晰度有所不同,因此使用經(jīng)典之作的轉(zhuǎn)動(dòng)視窗+影像圖形的計(jì)劃解決問題標(biāo)準(zhǔn)化目的檢驗(yàn)難題的生產(chǎn)成本太低。近幾年來,目標(biāo)檢測(cè)算法取得了很大的突破。比較流行的算法可以分為兩類,一類是基于Region Proposal的R-CNN系算法(R-CNN,F(xiàn)ast R-CNN, Faster R-CNN等),它們是two-stage的,需要先算法產(chǎn)生目標(biāo)候選框,也就是目標(biāo)位置,然后再對(duì)候選框做分類與回歸。而另一類是Yolo,SSD這類one-stage算法,其僅僅使用一個(gè)卷積神經(jīng)網(wǎng)絡(luò)CNN直接預(yù)測(cè)不同目標(biāo)的類別與位置。第一類方法是準(zhǔn)確度高一些,但是速度慢,但是第二類算法是速度快,但是準(zhǔn)確性要低一些。那么今天我們的項(xiàng)目并不會(huì)太多的講解各種算法,而是我們的核心主題,目標(biāo)數(shù)量識(shí)別。

那么我們將如何進(jìn)行實(shí)現(xiàn)呢

多說無益,下面可以開始實(shí)現(xiàn)我們的項(xiàng)目。

首先導(dǎo)入相關(guān)的庫(kù)

?
1
2
3
4
import cv2
from PIL import Image
from PIL import ImageDraw,ImageFont
import numpy as np

 

接著我們需要把水龍頭流出水柱的部分提取出來,即需要把圖片預(yù)先處理成這樣,作為背景圖來用,名為3ji.jpg如圖所示:

通過 Python 和 OpenCV 實(shí)現(xiàn)目標(biāo)數(shù)量監(jiān)控

然后通過圖像作差的方法找到水柱的部分,首先就需要將圖像轉(zhuǎn)彩灰度圖然后高斯模糊便于計(jì)算,當(dāng)然其實(shí)不這樣也是可以的。其中2.jpg是測(cè)試的圖片,

通過 Python 和 OpenCV 實(shí)現(xiàn)目標(biāo)數(shù)量監(jiān)控

代碼如下:

?
1
2
3
4
5
6
7
8
9
10
'''3ji是背景圖不可換,調(diào)試換另一個(gè)圖片,3ji自己用畫圖找到水的位置清除掉水柱即可,所以說攝像頭不能動(dòng)'''
firstframe=cv2.imread("3ji.jpg")
firstframe= cv2.cvtColor(firstframe, cv2.COLOR_BGR2GRAY)
firstframe= cv2.GaussianBlur(firstframe, (21, 21), 0)
secondframe0=cv2.imread("2.jpg")
secondframe0= cv2.cvtColor(secondframe0, cv2.COLOR_BGR2GRAY)
secondframe= cv2.GaussianBlur(secondframe0, (21, 21), 0)
frameDelta = cv2.absdiff(firstframe, secondframe)
x,y=frameDelta.shape
print(x,y)

 

接著通過邊緣檢測(cè)找到水柱邊界,方便查看。

?
1
2
3
#frameDelta和canny一個(gè)是區(qū)域一個(gè)是輪廓
img = cv2.GaussianBlur(frameDelta,(3,3),0)
canny = cv2.Canny(img, 0, 100)

 

定義水柱總面積變量。清水面積變量,ss數(shù)組存儲(chǔ)像素值位置

?
1
2
3
area=0 #6687,總面積
qingarea=0
ss=[]

 

然后畫出輪廓,并記錄水柱處像素值得位置

?
1
2
3
4
5
#畫輪廓,存儲(chǔ)要識(shí)別的像素值位置,記錄在ss數(shù)組中
for i in range(x):
  for j in range(y):
   if any(frameDelta[i,j]!=[0,0,0]):#白色的時(shí)候,占位
    ss.append([i,j])

 

然后以原圖加輪廓圖顯示,圖片相加即可:

?
1
canny0=cv2.add(secondframe0,canny)

 

接著根據(jù)像素值大小判斷顏色,通過調(diào)試這個(gè)項(xiàng)目的閾值是50

?
1
2
3
4
5
6
7
8
9
10
11
12
#判斷水柱顏色,清水占多少像素
for t in ss:
 k,l=t
 area=area+1
 if canny0[k, l] > 50:
  print(canny0[k,l])
  qingarea+=1
接著統(tǒng)計(jì)黑色水柱占比率為多少
deta=(qingarea/area)*100
print(qingarea)
pred="清水占比為"+str(deta)+"%"
print(pred)

 

最后輸出圖像結(jié)果:

?
1
2
3
4
5
6
7
8
9
cv2.imwrite("pred.jpg",canny0)
canny0=cv2.imread("pred.jpg")
img_PIL = Image.fromarray(cv2.cvtColor(canny0, cv2.COLOR_BGR2RGB))
myfont = ImageFont.truetype(r'C:/Windows/Fonts/simfang.ttf', 40)
draw = ImageDraw.Draw(img_PIL)
draw.text((200, 10), pred, font=myfont, fill=(255,23,140))
img_OpenCV = cv2.cvtColor(np.asarray(img_PIL), cv2.COLOR_RGB2BGR)
cv2.imshow("frame", img_OpenCV)
key = cv2.waitKey(0)

 

最終達(dá)到的演示效果如圖所示:

清水占比96%,還是比較準(zhǔn)確的

通過 Python 和 OpenCV 實(shí)現(xiàn)目標(biāo)數(shù)量監(jiān)控

清水占比38%,黑水占比62%,也基本準(zhǔn)確。

通過 Python 和 OpenCV 實(shí)現(xiàn)目標(biāo)數(shù)量監(jiān)控

當(dāng)然這僅僅是一個(gè)思路的問題,至少目前為止網(wǎng)上還沒有對(duì)物體數(shù)目去監(jiān)控的項(xiàng)目例子,盡管并不是如此高深,但是卻是一個(gè)很好的探究方向。不僅僅是智能采礦的需要,也可以是智能農(nóng)業(yè)或者智能畜牧業(yè)等方面監(jiān)控的一個(gè)想法。當(dāng)然大家也是可以再次基礎(chǔ)上修改完善代碼,完整的代碼上面已經(jīng)給出。伴隨著移動(dòng)互聯(lián)網(wǎng)、手機(jī)及各交友的平臺(tái)的較慢持續(xù)發(fā)展,照片的廣泛傳播幅度大大增強(qiáng),廣泛傳播范圍內(nèi)也日益擴(kuò)展。比起書寫、視頻、錄像等廣泛傳播方式,照片廣泛傳播極具“點(diǎn)睛”視覺效果,合乎節(jié)奏貧困下人們高效的讀者方法。

當(dāng)照片給人們帶給快捷的數(shù)據(jù)紀(jì)錄和共享方法的同時(shí),照片普遍地廣泛傳播在社會(huì)大眾視線下,適當(dāng)?shù)碾y題也接踵而來。書寫記述,使用者可以精彩通過關(guān)鍵字搜尋提供意愿數(shù)據(jù),而當(dāng)照片記述,使用者難以必要通過搜尋照片索引到可借助數(shù)據(jù)。

科技進(jìn)步的變革常常與解決的表達(dá)意見如影隨形,在使用者痛點(diǎn)下,亟需高科技的改進(jìn)創(chuàng)意,此自然環(huán)境下涌現(xiàn)的圖像識(shí)別新技術(shù)之后變得尤為重要。由此也可見計(jì)算機(jī)視覺的日益高漲的地位。

總結(jié)

以上所述是小編給大家介紹的通過 Python 和 OpenCV 實(shí)現(xiàn)目標(biāo)數(shù)量監(jiān)控,希望對(duì)大家有所幫助!

原文鏈接:https://www.cnblogs.com/7758520lzy/archive/2020/01/05/12152184.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 热99视频 | 在线观看国产免费视频 | 亚州综合 | hd日本xxxx| 亚洲九九爱 | 久草在线观看资源 | 成年免费大片黄在线观看岛国 | 国产一区网址 | 一级大片视频 | 亚洲成人欧美在线 | 久久精品色 | chengrenzaixian| tube7xxx| 美女被免费网站在线软件 | 欧美大穴| 九九久久视频 | 日本一区二区视频在线 | 国产三级国产精品国产普男人 | 91经典视频 | www.guochan| 九色成人在线 | 毛片免费大全短视频 | 亚洲精品欧美二区三区中文字幕 | 欧美色视| 久久91亚洲人成电影网站 | 国产一国产一级毛片视频 | 一级裸体视频 | 国产精品999在线观看 | 久久精品国产精品亚洲 | 久久精品国产清自在天天线 | 我爱我色成人网 | 毛片在线视频观看 | 亚洲骚妻 | 牛牛视频在线 | 黄色毛片一级 | 护士hd老师fre0性xxx | 亚洲乱码精品久久久久 | 免费a视频在线观看 | 久久精品视频免费 | 中文字幕欧美日韩 | 日韩色视频在线观看 |