Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何给我为数人而画的矩形编号?_Python_Opencv_Counting - Fatal编程技术网

Python 如何给我为数人而画的矩形编号?

Python 如何给我为数人而画的矩形编号?,python,opencv,counting,Python,Opencv,Counting,我使用了混合高斯算法,而不是用树影法来清除阴影,然后用轮廓线来寻找白色物体。然后我在它们周围画了矩形。现在我想给这些长方形加上数字,我想用数字来追踪长方形,以便计算人数 这是我使用的代码,如果你能给我一些关于计数的想法,那就太棒了 import numpy as np import cv2 import sys video_path = 'video.avi' cv2.ocl.setUseOpenCL(False) version = cv2.__version__.split('.')[0]

我使用了混合高斯算法,而不是用树影法来清除阴影,然后用轮廓线来寻找白色物体。然后我在它们周围画了矩形。现在我想给这些长方形加上数字,我想用数字来追踪长方形,以便计算人数

这是我使用的代码,如果你能给我一些关于计数的想法,那就太棒了

import numpy as np
import cv2
import sys
video_path = 'video.avi'
cv2.ocl.setUseOpenCL(False)
version = cv2.__version__.split('.')[0]
print(version) 
cap = cv2.VideoCapture(video_path)
if version == '2' :
        fgbg = cv2.BackgroundSubtractorMOG2()
if version == '3': 
        fgbg = cv2.createBackgroundSubtractorMOG2()
while (cap.isOpened):   
    ret, frame = cap.read()
    if ret==True:       
        fgmask = fgbg.apply(frame)
        ret1,th1 = cv2.threshold    (fgmask,150,200,cv2.THRESH_BINARY)                  
        if version == '2' : 
            (contours, hierarchy) =     cv2.findContours(th1.copy(),     cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
        if version == '3' : 
            (im2, contours, hierarchy) =     cv2.findContours(th1.copy(),     cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
            for c in contours:
            if cv2.contourArea(c) < 500:
                continue

            (x, y, w, h) = cv2.boundingRect(c)                              cv2.rectangle(frame, (x, y), (x + w,     y + h), (0, 255, 0), 2)

        cv2.imshow('foreground and background',th1)
        cv2.imshow('rgb',frame)
        if cv2.waitKey(1) & 0xFF == ord("q"):
            break
cap.release()
cv2.destroyAllWindows()
将numpy导入为np
进口cv2
导入系统
视频路径='video.avi'
cv2.ocl.setUseOpenCL(错误)
version=cv2.\uuuuuuuuuuuuuuuuu版本\uuuuuuuuuu.split('.')[0]
印刷品(版本)
cap=cv2.视频捕获(视频路径)
如果版本==“2”:
fgbg=cv2.BackgroundSubtractorMOG2()
如果版本==“3”:
fgbg=cv2.createBackgroundSubtractorMOG2()
而(盖等厚):
ret,frame=cap.read()
如果ret==True:
fgmask=fgbg.apply(帧)
ret1,th1=cv2.threshold(fgmask,150200,cv2.THRESH_二进制)
如果版本==“2”:
(等高线,层次)=cv2.findContours(th1.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
如果版本==“3”:
(im2,轮廓,层次)=cv2.FindContentours(th1.copy(),cv2.RETR\u EXTERNAL,cv2.CHAIN\u APPROX\u SIMPLE)
对于等高线中的c:
如果cv2.轮廓面积(c)<500:
持续
(x,y,w,h)=cv2.边界矩形(c)cv2.矩形(框架,(x,y),(x+w,y+h),(0,255,0),2)
cv2.imshow(“前景和背景”,th1)
cv2.imshow('rgb',帧)
如果cv2.waitKey(1)&0xFF==ord(“q”):
打破
第1章释放()
cv2.destroyAllWindows()

Simply
print len(等高线)
可以得到等高线的数量。我想数一数屏幕上有多少人,然后给他们数字(ID)。我不知道在哪里放置print len(等高线)来获得等高线的数量。Simply
print len(等高线)
将获得轮廓数。我想数一数屏幕上有多少人,然后给他们数字(ID)。我不知道在哪里放置打印镜头(轮廓)以获得轮廓数。