使用 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):
在 cX
和 cY
行之后附加值,如下所示:
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)
我正在尝试使用 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):
在 cX
和 cY
行之后附加值,如下所示:
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)