1

我试图找到在不同帧中检测到的所有对象,我认为这将给出阈值中检测到的每个区域的列表,但是find_objects给出了一堆“无”和整个图像的范围?

...
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
(slice(0, 972, None), slice(0, 1296, None))

相关代码可以从这里测试

import numpy as np
import cv2
from matplotlib import pyplot as plt
import pylab

from scipy import ndimage
import os

for img in os.listdir('.'):
    if img.endswith('.jpg'):
        image = cv2.imread(img)
        gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
        gray_image = cv2.resize(gray_image, (int(gray_image.shape[1]/2), int(gray_image.shape[0]/2) ))
        ret, threshimg = cv2.threshold(gray_image,0,255,cv2.THRESH_BINARY)
        cv2.imshow('opening',threshimg)
        objects = ndimage.find_objects(threshimg)
        for ob in objects:
            print(ob)
        cv2.waitKey(0)                 # Waits forever for user to press any key   
        cv2.destroyAllWindows()
4

1 回答 1

0

您可以使用cv2.connectedComponentsWithStats相同的。

import numpy as np
import cv2
from matplotlib import pyplot as plt
import pylab

from scipy import ndimage
import os
### for visualising connected component image
def imshow_components(labels):
    # Map component labels to hue val
    label_hue = np.uint8(179*labels/np.max(labels))
    blank_ch = 255*np.ones_like(label_hue)
    labeled_img = cv2.merge([label_hue, blank_ch, blank_ch])

    # cvt to BGR for display
    labeled_img = cv2.cvtColor(labeled_img, cv2.COLOR_HSV2BGR)

    # set bg label to black
    labeled_img[label_hue==0] = 0
    return labeled_img

for img in os.listdir('.'):
    if img.endswith('.jpg'):
        image = cv2.imread(img)
        gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
        gray_image = cv2.resize(gray_image, (int(gray_image.shape[1]/2), int(gray_image.shape[0]/2) ))
        ret, threshimg = cv2.threshold(gray_image,0,255,cv2.THRESH_BINARY)
        num_labels, labels, stats, centroids = cv2.connectedComponentsWithStats(thresh)
        out_image=imshow_components(labels)
        #### stats will have x,y,w,h,area of each detected connected component

有关连接组件功能的更多信息,请参阅此答案

于 2020-07-05T07:27:34.757 回答