(python),用于循环操作0次,1次,多次用于在同一个img上创建几个cv2矩形
我计划在原始img上画正方形,显示副本的部分,如果有三个,只写2倍于第一个原始图片输出,那应该有2个正方形。
我试着把下面的每一步都说出来。
for k in range(len(list_for_duplicate_x_and_y)):
# means no duplicate, don't need to draw square
if len(list_for_duplicate_x_and_y) == 0:
print("ok no duplicate")
# draw square on img "original_duplicate.png"
elif len(list_for_duplicate_x_and_y) < 0:
duplicate_xy = list_for_duplicate_x_and_y[k]
duplicate_x = duplicate_xy[0]
duplicate_y = duplicate_xy[1]
k +=1
img = cv2.imread("/home/student_DC/desktop/optimization_11_10/original_duplicate.png")
duplicate_x = duplicate_x - 28
duplicate_y = duplicate_y -54
cv2.rectangle(img, (duplicate_x, duplicate_y), (duplicate_x + 92, duplicate_y + 82), (0, 255, 5), 5)
cv2.imwrite("/home/student_DC/desktop/optimization_11_10/original_duplicate_output.png" , img)
# means 1 duplicate, draw 1 square on duplicate part
if len(list_for_duplicate_x_and_y) == 1:
break
# draw square on img "original_duplicate_output", and if there is three, just over write 2 times, should has 2 square
# means n duplicate, draw n square on duplicate part
elif len(list_for_duplicate_x_and_y) < 1:
img = cv2.imread("/home/student_DC/desktop/optimization_11_10/original_duplicate_output.png")
duplicate_x = duplicate_x - 28
duplicate_y = duplicate_y -54
cv2.rectangle(img, (duplicate_x, duplicate_y), (duplicate_x + 92, duplicate_y + 82), (0, 255, 5), 5)
cv2.imwrite("/home/student_DC/desktop/optimization_11_10/original_duplicate_output.png" , img) 问题:如何圈出多个绿色正方形,我的输出总是一平方。
这是输出图:https://imgur.com/a/hnj0KS7
(ps.)我想是第25行elif len(list_for_duplicate_x_and_y) < 1:需要改变什么,能不能有人帮我一下,谢谢。
发布于 2022-11-11 08:05:56
您根本不需要那些if语句。根据列表的长度,您处于一个for循环中。如果长度为零,则循环将不会运行。长度不可能是< 0。
https://stackoverflow.com/questions/74387614
复制相似问题