Как рисовать прямоугольники, используя список в Python
for line, images_files in zip(lines, image_list):
info = line.split(',')
image_index = [int(info[0])]
box_coordiante1 = [info[2]]
box_coordiante2 = [info[3]]
box_coordiante3 = [info[4]]
box_coordiante4 = [info[5]]
prev_image_num = 1
for image_number in image_index: #### read each other image_number
if prev_image_num != image_number: # if read 11111 but appear different number such as 2, 3 and ect
prev_image_num = image_number # the different number becomes pre_image_num(it was 1)
#box_coordinate = [] # empty box_coordinate
#box_coordinate.append(info[2:6])
#print box_coordinate
# box_coordinate.append() #insert 2 to 6 axis
rect = plt.Rectangle((int(box_coordiante1), int(box_coordiante2)), int(box_coordiante3), int(box_coordiante4), linewidth=1, edgecolor='r', facecolor='none')
ax.add_patch(rect)
im = cv2.imread(images_files)
im = im[:, :, (2, 1, 0)]
# # Display the image
plt.imshow(im)
plt.draw()
plt.pause(0.1)
plt.cla()
Я должен нарисовать коробки на каждой картинке. Для показа ящиков на каждой картинке, я предполагаю, что собирать местоположение ящиков и показывать их одновременно. Так что я использовал способ, используя LIST для plt.Rectanle, но он сказал: "Аргумент TypeError: int() должен быть строкой или числом, а не" списком "). Есть ли другие способы??
3 ответа
Решение
Я не очень знаком с Python, но кажется, что вы хотите простое число в переменных image_index
а также box_coordinateN
, Похоже, вы назначаете им одноэлементные массивы. Попробуйте изменить:
image_index = [int(info[0])] // list containing one element: int(info[0])
box_coordiante1 = [info[2]]
box_coordiante2 = [info[3]]
box_coordiante3 = [info[4]]
box_coordiante4 = [info[5]]
чтобы:
image_index = int(info[0]) // number: int(info[0])
box_coordiante1 = info[2]
box_coordiante2 = info[3]
box_coordiante3 = info[4]
box_coordiante4 = info[5]
Умм, я только что сделал. Но я не знаю, хотите ли вы этого.
x = 10
y = 10
a = []
for unit for range(x):
a.append(0)
for unit for range(y):
print(a)
Ответ выше - небрежно небрежный и неправильный Python.
Его необходимо переписать и исправить следующим образом:
x = 10
y = 10
a = []
for unit in range(x):
a.append(0)
for unit in range(y):
print(a)