十三绯 2022-03-09 19:45 采纳率: 25%
浏览 18

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
  • 写回答

1条回答 默认 最新

  • ~白+黑 Python领域新星创作者 2022-03-10 11:52
    关注

    把以下重复内容,包装成一个函数,简化代码,用列表推导,然后用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)        
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 3月9日

悬赏问题

  • ¥15 C#中的编译平台的区别影响
  • ¥15 软件供应链安全是跟可靠性有关还是跟安全性有关?
  • ¥15 电脑蓝屏logfilessrtsrttrail问题
  • ¥20 关于wordpress建站遇到的问题!(语言-php)(相关搜索:云服务器)
  • ¥15 【求职】怎么找到一个周围人素质都很高不会欺负他人,并且未来月薪能够达到一万以上(技术岗)的工作?希望可以收到写有具体,可靠,已经实践过了的路径的回答?
  • ¥15 Java+vue部署版本反编译
  • ¥100 对反编译和ai熟悉的开发者。
  • ¥15 带序列特征的多输出预测模型
  • ¥15 Python 如何安装 distutils模块
  • ¥15 关于#网络#的问题:网络是从楼上引一根网线下来,接了2台傻瓜交换机,也更换了ip还是不行