CV2: есть ли функция, которая выводит количество белых точек в многоугольнике? - PullRequest
1 голос
/ 27 октября 2019

Я делаю «Вычитание фона» с помощью VideoStream. Затем я хочу проверить внутри указанного многоугольника, есть ли белые точки.

Я думал об использовании https://docs.opencv.org/2.4/doc/tutorials/imgproc/shapedescriptors/point_polygon_test/point_polygon_test.html, но я не знаю, как это сделать, потому что белые точкисуществуют после применения фильтра. Оригинальный поток также содержит белые точки, которые я также не хочу считать.

import numpy as np
import cv2
import time
cap = cv2.VideoCapture() 
cap.open("rtsp://LOGINNAME:PASSWORD@192.168.178.42:554")
#cap.open("C:\\Users\\001\\Desktop\\cam-20191025-220508-220530.mp4")

fgbg = cv2.bgsegm.createBackgroundSubtractorMOG()

while(1):
    ret, frame = cap.read()
    fgmask = fgbg.apply(frame)
    polygonInnenAutoErkennen_cnt = np.array( [(24, 719), (714,414), (1005,429),(1084,719)] )
    cv2.drawContours(fgmask,[polygonInnenAutoErkennen_cnt],-1,(255,128,60))
    #How can I check here?
    cv2.imshow('frame',fgmask)
    k = cv2.waitKey(30) & 0xff
    if k == 27: # exit on ESC
    break

cap.release()
cv2.destroyAllWindows()

1 Ответ

0 голосов
/ 27 октября 2019

Самый простой способ - использовать маску изображения. Постройте полигон на бинарном изображении и используйте его в качестве маски для белых точек. Вы можете просто сделать для каждого пикселя умножение или логическое И.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...