使用 openCV 在数组中保存多个值

Saving multiple values in an array using openCV

我正在尝试使用 OpenCV 保存一系列图像质心的 x、y 位置。

我的代码是:

import cv2 as cv
import glob
import numpy as np
import os

#---------------------------------------------------------------------------------------------

# Read the Path

path1 = r"D:\Direction of folder" 

for file in os.listdir(path1): # imagens from the path 
    if file.endswith((".png",".jpg")): # Images formats 

        # Reed all the images 

        Image = cv.imread(file)

        # RGB to Gray Scale
        
        GS = cv.cvtColor(Image, cv.COLOR_BGR2GRAY)
        th, Gray = cv.threshold(GS, 128, 192, cv.THRESH_OTSU)
        
        # Gray Scale to Bin

        ret,Binari = cv.threshold(GS, 127,255, cv.THRESH_BINARY)

        # Moments of binary images

        M = cv.moments(Binari)

        # calculate x,y coordinate of center

        cX = [int(M["m10"] / M["m00"])]
        cY = [int(M["m01"] / M["m00"])]

#---------------------------------------------------------------------------------------------

如何将变量 cX 和 cY 的所有 x,y 位置存储在一个数组中?

for循环之前创建两个空列表如下:

cXs, cYs = [], []
for file in os.listdir(path1): 

cXcY 行之后附加值,如下所示:

    cX = [int(M["m10"] / M["m00"])]
    cY = [int(M["m01"] / M["m00"])]
    cXs.append(cX)
    cYs.append(cY)

您可以在 for 循环结束后使用它们。例如:

print(cXs)
print(cYs)

如果需要,您可以将它们转换为 numpy 数组,如下所示:

cXs = np.array(cXs)
cYs = np.array(cYs)