簡體   English   中英

Python在圖像數組中查找顏色並用值填充二維數組

[英]Python find colors in image array and fill 2D array with value

我有一個帶有顏色分割的圖像,我想從 BGR 顏色列表中找到具有顏色的像素。 從這些像素索引中,我想用一些任意值填充一個二維數組。 我已經完成了這個,但它非常慢:

#load image with color segmentations
img = cv2.imread(segmented_img_path)
#create empty output array
output = np.zeros((img.shape[0], img.shape[1]))
#iterate over image and find colors
for i, row in enumerate(img):
    for j, bgr in enumerate(row):
        if np.any(np.all(np.isin(np.array(color_list),bgr,True),axis=1)):
            output[i,j] = float(some_value)

必須有一種更快的方法來做到這一點,可能使用 np.where 但我就是想不通。

我認為這可以按照以下示例中的執行來完成。 下面是一個可以根據您的需要進行擴展的簡化示例。

m = np.array(([1,2,3], [4,5,6], [1,2,3]))
d = np.zeros((np.shape(m)))
BGR = [1,3]
for color in BGR:
   d[m==color] = color+1000

我們簡單地遍歷您想要在 BGR 列表中查找的顏色值,並在 for 循環中替換它們。 這里 color+1000 是您引用的任意值。

對於您的情況,它將顯示如下:

img = cv2.imread(segmented_img_path)
output = np.zeros((img.shape))
for bgr in BGR:
   output[img==bgr] = float(some_value)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM