我一直试图在越线时计算汽车并且它可以工作,但问题是它多次计算一辆车是荒谬的,因为它应该被计算一次
这是我正在使用的代码:
import cv2
import numpy as np
bgsMOG = cv2.BackgroundSubtractorMOG()
cap = cv2.VideoCapture("traffic.avi")
counter = 0
if cap:
while True:
ret, frame = cap.read()
if ret:
fgmask = bgsMOG.apply(frame, None, 0.01)
cv2.line(frame,(0,60),(160,60),(255,255,0),1)
# To find the countours of the Cars
contours, hierarchy = cv2.findContours(fgmask,
cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
try:
hierarchy = hierarchy[0]
except:
hierarchy = []
for contour, hier in zip(contours, hierarchy):
(x, y, w, h) = cv2.boundingRect(contour)
if w > 20 and h > 20:
cv2.rectangle(frame, (x,y), (x+w,y+h), (255, 0, 0), …Run Code Online (Sandbox Code Playgroud) 我已经让OpenCV使用Python,我甚至可以通过我的网络摄像头检测到一张脸.我真正想要做的是看动作并在动作的中间找到点.camshift样本接近我想要的,但我不想选择要跟踪的视频部分.能够预测下一帧的奖励积分.
这是我目前的代码:
#!/usr/bin/env python
import cv
def is_rect_nonzero(r):
(_,_,w,h) = r
return (w > 0) and (h > 0)
class CamShiftDemo:
def __init__(self):
self.capture = cv.CaptureFromCAM(0)
cv.NamedWindow( "CamShiftDemo", 1 )
self.storage = cv.CreateMemStorage(0)
self.cascade = cv.Load("/usr/local/share/opencv/haarcascades/haarcascade_mcs_upperbody.xml")
self.last_rect = ((0, 0), (0, 0))
def run(self):
hist = cv.CreateHist([180], cv.CV_HIST_ARRAY, [(0,180)], 1 )
backproject_mode = False
i = 0
while True:
i = (i + 1) % 12
frame = cv.QueryFrame( self.capture )
if i == 0:
found = cv.HaarDetectObjects(frame, self.cascade, self.storage, …Run Code Online (Sandbox Code Playgroud) 请考虑以下图像:

这是来自交通视频片段的帧.
我想要做的是,只裁剪迎面而来的交通,并进行分析.我想要一种快速有效的方法,通过提供某些坐标,我可以提取多边形.
我正在研究OpenCV和Python.
编辑:
我看到的一个选项是将图像视为Numpy数组并使用for循环来提取某些元素,但这不会有效,我不知道它是否适合做.