首页 > 解决方案 > 如何使用序列设置数组元素?

问题描述

我的问题很简单。我有中心值和半径值。我想将这些值分别放入中心和半径数组中。

centers[0][i], radius[0][i] = cv.minEnclosingCircle(contours_poly[i])

当我运行我的代码时,我在这一行中得到“使用序列设置数组元素”。

from __future__ import print_function
import cv2 as cv
import numpy as np
import argparse
import random as rng
rng.seed(12345)

threshold = 100
parser = argparse.ArgumentParser(description='Code for Creating Bounding boxes and circles for contours tutorial.')
parser.add_argument('--input', help='Path to input image.', default='stuff.jpg')
args = parser.parse_args()
src = cv.imread('training3.jpg')
if src is None:
    print('Could not open or find the image:', args.input)
    exit(0)
# Convert image to gray and blur it
src_gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)
src_gray = cv.blur(src_gray, (3,3))
source_window = 'Source'
cv.namedWindow(source_window)
cv.imshow(source_window, src)
canny_output = cv.Canny(src_gray, threshold, threshold * 2)

contours, _ = cv.findContours(canny_output, cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE)

contours_poly = [None]*len(contours)
boundRect = [None]*len(contours)
centers = np.zeros([2,len(contours)])
radius = np.zeros([1,len(contours)])

for i, c in enumerate(contours):
   contours_poly[i] = cv.approxPolyDP(c, 3, True)
   boundRect[i] = cv.boundingRect(contours_poly[i])
   centers[0][i], radius[0][i] = cv.minEnclosingCircle(contours_poly[i])

cv.minEnclosureCircle(contours_poly[i]) 内部是:

cv.minEnclosingCircle(contours_poly[0]) = ((688.5, 958.5), 2.9155757427215576)

例如,我想得到这些结果:

centers[0] =  (688.5, 958.5)
radius[0] = 2.9155757427215576

我怎么解决这个问题?谢谢您的帮助 :)

标签: python

解决方案


推荐阅读