Как найти объекты с помощью скользящего окна - PullRequest
0 голосов
/ 08 июля 2020

Я пытаюсь найти объекты с помощью скользящего окна. Скользящее окно перемещается по изображению слева направо вверх вниз. Когда в скользящем окне обнаруживаются ненулевые пиксели, размер которых составляет 70% от размера окна, нарисуйте вокруг него прямоугольник. Я пишу такой код, но когда я его запускал, он показывает только изображение без прямоугольника, как будто скользящее окно ничего не нашло, пока на картинке есть объекты. Как это исправить? спасибо

Изображение: изображение с надписью

введите описание изображения здесь

import cv2
import numpy as np
import matplotlib.pyplot as plt


img = cv2.imread("LabeledImage.jpg")
ImgW = img.shape[1]
ImgH = img.shape[0]
stepSize = 25

(WinHeight, WinWidth) = (35, 200)  # window size

# Sliding Window
for x in range(0, ImgH - WinHeight, stepSize):
    for y in range(0, ImgW - WinWidth, stepSize):
        window = img[y:y + WinWidth, x:x + WinHeight, :]
        LabeledPixels = []
        for j in range(window.shape[1]):
            for i in range(window.shape[0]):
                pixel = window[i,j]
                if pixel.any() > 0 :
                    LabeledPixels.append(pixel)

        # Count pixels with value greater than 0, if pixels more than 70% draw rectangle around
        WinSize = WinWidth * WinHeight
        MinObjSize = (70 / 100) * WinSize
        cntPixel = len(LabeledPixels)

        if cntPixel > MinObjSize:
            cv2.rectangle(img, (y, x), (y + WinWidth, x + WinHeight,), (0, 255, 0), 1)

plt.imshow(np.array(img).astype('uint8'))
plt.show()
...