update
This commit is contained in:
63
checkobject.py
Normal file
63
checkobject.py
Normal file
@ -0,0 +1,63 @@
|
||||
import cv2 as cv
|
||||
#from segmentation import get_object_mask
|
||||
import os, time
|
||||
|
||||
def get_object_location(pfile, mask_path = 'lianhua_1.jpg'):
|
||||
kernel = cv.getStructuringElement(cv.MORPH_ELLIPSE, (3, 3)) # 定义结构元素
|
||||
fgbg = cv.createBackgroundSubtractorMOG2(detectShadows=False)
|
||||
nu, nn = 0, 1
|
||||
flag = False
|
||||
T1 = time.time()
|
||||
# 设置文件
|
||||
cap = cv.VideoCapture(pfile)
|
||||
while True:
|
||||
# 读取一帧
|
||||
ret, frame = cap.read()
|
||||
nn += 1
|
||||
if (not ret):
|
||||
break
|
||||
if flag:
|
||||
flag = False
|
||||
print('flag change>>{}>>{}'.format(pfile, nn))
|
||||
return '1'
|
||||
|
||||
frame = cv.resize(frame, (512, 640), interpolation=cv.INTER_CUBIC)
|
||||
frame = cv.medianBlur(frame, ksize=3)
|
||||
frame_motion = frame.copy()
|
||||
|
||||
# 计算前景掩码
|
||||
fgmask = fgbg.apply(frame_motion)
|
||||
draw1 = cv.threshold(fgmask, 25, 255, cv.THRESH_BINARY)[1] # 二值化
|
||||
draw1 = cv.dilate(draw1, kernel, iterations=1)
|
||||
if nn<10: #判断10帧内有入侵动作
|
||||
flag = check_tings(mask_path, draw1)
|
||||
T2 = time.time()
|
||||
print('single video >>> {}-->{}-->{}'.format(pfile, nn, (T2 - T1)))
|
||||
return '0'
|
||||
|
||||
def check_tings(mask_path, img):
|
||||
dics = {}
|
||||
mask_img = cv.imread(mask_path)
|
||||
img = cv.bitwise_and(mask_img[:,:,0], img)
|
||||
contours_m, hierarchy_m = cv.findContours(img.copy(), cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)
|
||||
for contour in contours_m:
|
||||
# print('contour', hierarchy_m)
|
||||
dics[len(contour)] = contour
|
||||
if len(dics.keys()) > 0:
|
||||
cc = sorted(dics.keys())
|
||||
iouArea = cv.contourArea(dics[cc[-1]])
|
||||
# if iouArea>10000 and iouArea<40000:
|
||||
if iouArea>10000 and iouArea<40000:
|
||||
return '1'
|
||||
else:
|
||||
return '0'
|
||||
else:
|
||||
return '0'
|
||||
|
||||
if __name__ == '__main__':
|
||||
pfile = "videos/20230130-100958_e5910f7d-90dd-4f6b-9468-689ba45fe656.mp4"
|
||||
mask_path = 'models/lianhua_1.jpg'
|
||||
#frame_path = 'frame'
|
||||
#result_path = 'result'
|
||||
get_object_location(pfile, mask_path)
|
||||
|
Reference in New Issue
Block a user