我有一个自行车劫案的闭路电视录像,视频不清楚。我正在努力改进视频,以查找有关车辆或面部的详细信息,或从中获取任何其他信息。
https://drive.google.com/file/d/0B8ZjiDWHZ1j-QkVKZFV4ZkV1ODA/view?usp=sharing
原始直方图均等化 CLAHE
到目前为止,我在python opencv中所做的工作
关于如何继续从视频中收集更多信息的任何帮助(或者由于某些限制而死胡同)
import numpy as np
import cv2
import time
cap = cv2.VideoCapture('./bike_robbery.mp4')
clahe = cv2.createCLAHE(clipLimit=3.0, tileGridSize=(32,32))
count=0
sig = 1
th = 0
lm = 1.0
gm = 0.02
ps = 0;
ksize =31
gaborKernel=cv2.getGaborKernel((ksize,ksize), sig, th, lm, gm, ps);
sleeptime=0.001
while(cap.isOpened()):
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cl1 = clahe.apply(gray)
equ = cv2.equalizeHist(gray)
#denoise=cv2.fastNlMeansDenoising(cl1,None,3,90,2)
ths=cv2.threshold(equ, 230, 255, cv2.THRESH_BINARY)[1]
gab=cv2.filter2D(cl1,0 , cv2.CV_32F, gaborKernel);
kernel = np.array([[-1,-1,-1], [-1,18,-1], [-1,-1,-1]])
im = cv2.filter2D(equ, -1, kernel)
res = np.hstack((gray,equ,cl1)) #stacking images side-by-side
cv2.imwrite("./clahe_pics/frame%d.jpg" % count, cl1)
cv2.imwrite("./hist_pics/frame%d.jpg" % count, equ)
count = count + 1
cv2.imshow('frame',res)
time.sleep(sleeptime)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
if cv2.waitKey(1) & 0xFF == ord('s'):
sleeptime+=0.05
if cv2.waitKey(1) & 0xFF == ord('f'):
sleeptime-=.05
cap.release()
cv2.destroyAllWindows()
最佳答案
根据问题,如果要查找人和自行车的存在,可以使用一些分类器,例如人体检测和车辆检测。对于人类检测,您可以轻松找到预训练的哈尔分类器模型。对于检测自行车,您可以训练模型。好像是一个实时问题。
但是,如果您担心照明问题,则可以使用LAB图像并增强图像的L通道并调整图像的亮度。
为了进行人工检测,您可以在opencv的以下路径中找到模型:directory:opencv\sources\data\haarcascades