python中无法在for循环中修改变量

有这么一段代码

 for cls, (x1, y1, x2, y2), conf in pred:
                
                    cls, (x1, y1, x2, y2), conf = pred[fcount]
                    if CheckBlackPercent(img_only_paster, (x1, y1, x2, y2)):
                        # 将识别结果放到只有贴纸的图片中进行黑色像素占比判断,要是黑色占比多则说明是实物
                        # 要是占比少则是贴纸,不放入最后的识别框,也不加入最后的输出文档结果
                        del pred[detCount]
                        # fcount -= 1
                        continue

                    # print(names[cls], x1, y1, x2, y2, conf)  # 识别物体种类、左上角x坐标、左上角y轴坐标、右下角x轴坐标、右下角y轴坐标,置信度
                    temp_namelist.append(names[cls])
                    outputString_withConf += f"ID: {names[cls][0:5]},name:{names[cls][5:]},conf:{conf}\n "  # add to string
                    cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0))
                    cv2.putText(img, names[cls], (x1, y1 - 20), cv2.FONT_HERSHEY_DUPLEX, 0.2, (255, 0, 0))
                    detCount += 1
                    fcount += 1

我希望能够修改fcount循环变量,但是在代码运行过程中,通过debug断点调试,发现fcount并没有按照我所预想的进行改变:我希望我的fcount在for循环体+1后,在for循环头之后在原先+1的基础上继续+1。但实际上并没有,fcount在for循环头上并没有记录在循环体中+1。

搜寻资料才发现,python中无法在for循环中修改循环变量。

但是fcount在循环体中的值是可以被改变的。

参考资料:python for循环修改循环变量问题_5789113的博客-CSDN博客_python循环函数改变变量

对此,只需要把for修改为while即可

 # for cls, (x1, y1, x2, y2), conf in pred:
                while fcount < len(pred):
                    cls, (x1, y1, x2, y2), conf = pred[fcount]
                    if CheckBlackPercent(img_only_paster, (x1, y1, x2, y2)):
                        # 将识别结果放到只有贴纸的图片中进行黑色像素占比判断,要是黑色占比多则说明是实物
                        # 要是占比少则是贴纸,不放入最后的识别框,也不加入最后的输出文档结果
                        del pred[detCount]
                        # fcount -= 1
                        continue

                    # print(names[cls], x1, y1, x2, y2, conf)  # 识别物体种类、左上角x坐标、左上角y轴坐标、右下角x轴坐标、右下角y轴坐标,置信度
                    temp_namelist.append(names[cls])
                    outputString_withConf += f"ID: {names[cls][0:5]},name:{names[cls][5:]},conf:{conf}\n "  # add to string
                    cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0))
                    cv2.putText(img, names[cls], (x1, y1 - 20), cv2.FONT_HERSHEY_DUPLEX, 0.2, (255, 0, 0))
                    detCount += 1
                    fcount += 1

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值