python - 如何检测特定对象 ID 的性别?

标签 python opencv logic openvino

我正在使用 OpenVino python 代码进行年龄和性别检测。代码在每一帧上运行。
我有一个用于质心跟踪和分配 objectID 的 .py 文件。这用于跟踪在任何给定 session 期间出现的总人数。
但是现在,我正在尝试为上述代码创建一个 GUI,它显示男性和女性的总数。当一个人来(在我的代码中注册 objectID)和去(取消注册 objectID)时,我也希望它增加适当的性别计数。
这是我的代码片段:

while has_frame:
        rects=[]
        frame1 = np.array(frame, dtype='uint8')
        faces = faceCascade.detectMultiScale(
                    frame1,
                    scaleFactor=1.2,
                    minNeighbors=5,     
                    minSize=(20, 20)
                )
        for (x,y,w,h) in faces:
                cv.rectangle(frame,(x,y),(x+w,y+h),(255,0,0),2)
                rects.append((x,y,(x+w),(y+h)))
                x = int(x)
                y = int(y)
                w = int(w)
                h = int(h)

                if run_age_gender:
                    cropped_image = frame[y:y+h, x:x+w]
                    if cropped_image.size > 0:
                        age_inference.infer(cropped_image)
                        age, gender = age_inference.get_age_gender_data() #retreives the age and gender
                        age_gender_text = '{} - {}'.format(age , gender)
                        cv.putText(frame, age_gender_text, org=((x+w), (y+10)), fontFace=cv.FONT_HERSHEY_PLAIN,
                                   fontScale=1, color=(0, 64, 255), thickness=1, lineType=cv.LINE_AA)
        
        objects,intervals = ct.update(rects) #ct.update references my "centroidtracking.py" file to get objectID and time interval for each objectID (time spent by a given person in front of camera)

        for (objectID, centroid) in objects.items():
                text = "ID {}".format(objectID)
                cv.putText(frame, text, (centroid[0] - 10, centroid[1] - 10),
                    cv.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)
                cv.circle(frame, (centroid[0], centroid[1]), 4, (0, 255, 0), -1)

        for (objectID, time) in intervals.items():
                totaltime+=time
                totalppl+=1

        text = ("%0.2f" %(totaltime))
        self.ui.timetextbox.setPlainText(text)
        text2 = ("%d" %(totalppl))
        self.ui.ppltextbox.setPlainText(text2)

        if cv.waitKey(1) & 0xFF == ord('q'):
                     break

        has_frame, frame = source.read()
        frame_id += 1
这只是我的 while 循环的一个片段,其中进行了年龄和性别以及对象 ID 跟踪。
到目前为止,如果我尝试计算男性/女性,它会增加每帧的计数,并且与被检测到的人无关。
如果有什么建议让我将两者结合起来,以便对特定 ID(人)进行年龄和性别检测,而不是仅在每一帧上运行并在每一帧上检测性别?

最佳答案

关于python - 如何检测特定对象 ID 的性别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63176725/

相关文章:

python - 与默认计数器相比,GPU 上的计数器慢得要命?

opencv - 在 OpenCV 2.3.0 中计算阈值 IplImage 中 "White Blobs"数量的最佳方法

opencv - 向 oculus Rift 显示视频流

mysql 基于左连接字段的where条件

java - 将短语中字符的字符串值转换为莫尔斯电码的类

python - 如何将脚本作为 Travis CI 构建的一部分运行?

python 列表理解字母生成

testing - Oracle 问题,因为它与测试有关

python - 当电子邮件正文中包含中文字符时,email.retr 检索奇怪的 =20 个字符

android - OpenCV undefined reference `cv::fastFree(void*)'