python循环执行很久同志们有没有优化的方案撒

在这里完全卡主了

img


while 1: 
    i=0
    if ds[i][2]==ds[0][2]:
        fname = 'L:/1/data/'+ ds[i][2]
        img = cv2.imread(fname)

        #打框
        cv2.rectangle(img, (int(ds[i][7]),int(ds[i][8])),(int(ds[i][9]),int(ds[i][10])), (0, 255, 0), 8)

        #打上标签
        font = cv2.FONT_HERSHEY_DUPLEX  # 设置字体
        # 图片对象、文本、像素、字体、字体大小、颜色、字体粗细
        imgzi = cv2.putText(img, "1", (int(ds[i][5]),int(ds[i][6])), font, 1, (255, 255, 255), 4)

        #左上点即为中心点
        #Blue (0,0,255)
        point_size = 1
        point_color = (0, 0, 255) # BGR
        thickness = 16 # 可以为 048
        points_list = [(int(ds[i][5]),int(ds[i][6]))]
        for point in points_list:
            cv2.circle(img, point, point_size, point_color, thickness)

        #中心点即为左上点
        #red()
        point_size = 1
        point_color = (255, 0, 0) # BGR
        thickness = 16 # 可以为 048
        points_list = [(int(ds[0][7]),int(ds[0][8]))]
        for point in points_list:
            cv2.circle(img, point, point_size, point_color, thickness)

        #右上点
        #Green()
        point_size = 1
        point_color = (255,165,0) # BGR
        thickness = 16 # 可以为 048
        points_list = [(int(ds[i][9]),int(ds[i][10]))]
        for point in points_list:
            cv2.circle(img, point, point_size, point_color, thickness)        
        i=i+1
    else:
        break

把以下重复内容,包装成一个函数,简化代码,用列表推导,然后用time分段测试一下运行时间,看看瓶颈在哪里,把不变的变量尽量挪出循环,判断逻辑有没有更好的方式,


 point_size = 1

        point_color = (0, 0, 255) # BGR

        thickness = 16 # 可以为 048

        points_list = [(int(ds[i][5]),int(ds[i][6]))]

        for point in points_list:

            cv2.circle(img, point, point_size, point_color, thickness)

 

        #中心点即为左上点

        #red()

        point_size = 1

        point_color = (255, 0, 0) # BGR

        thickness = 16 # 可以为 048

        points_list = [(int(ds[0][7]),int(ds[0][8]))]

        for point in points_list:

            cv2.circle(img, point, point_size, point_color, thickness)

 

        #右上点

        #Green()

        point_size = 1

        point_color = (255,165,0) # BGR

        thickness = 16 # 可以为 048

        points_list = [(int(ds[i][9]),int(ds[i][10]))]

        for point in points_list:

            cv2.circle(img, point, point_size, point_color, thickness)