鱼C论坛

 找回密码
 立即注册
查看: 1633|回复: 6

[已解决]求助大佬看看这个错误急

[复制链接]
发表于 2023-3-9 21:22:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 lcx99 于 2023-3-9 21:25 编辑

import cv2
import numpy as np

cap = cv2.VideoCapture(r"C:\Users\12137\Desktop\qiche.mp4")
#创建mog对象
mog = cv2.bgsegm.createBackgroundSubtractorMOG()
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(5,5))

#  循环读取视频
while True:
    ret,frame = cap.read()
    if ret == True:
          #把原始帧灰度化去噪
        gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
         #去噪
        blur = cv2.GaussianBlur(gray,(3,3),5)
        mask = mog.apply(blur)
        #   腐蚀
        erode = cv2.erode(mask,kernel)
        #膨胀
        dialte = cv2.dilate(erode,kernel,iterations=2)
        #消除小快,闭运算
        close = cv2.morphologyEx(dialte,cv2.MORPH_CLOSE,kernel)
        #轮廓
        result ,con = cv2.findContours(close, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
        for co in con:
            (x, y, w, h) = cv2.boundingRect(co)
            #过滤小举
            # 要求坐标点是整数
            cv2.rectangle(frame, (int(x), int(y)), (int(x + w), int(y + h)), (0,0,255) ,2)
            cv2.imshow("frame",frame)
    Key = cv2.waitKey(1)
    #用户按esc退出
    if Key == 27:
        break
# 释放资源
cap.release()
cv2.destroyAllWindows()
以上是程序
Traceback (most recent call last):
  File "F:/python/22.py", line 26, in <module>
    for co in con:
TypeError: 'NoneType' object is not iterable
这是显示错误
不明白哪里错了
最佳答案
2023-3-9 22:07:25
本帖最后由 isdkz 于 2023-3-9 22:12 编辑

第 25 行的 result, con = cv2.findContours(close, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)  把 result 和 con 写反了
import cv2
import numpy as np

cap = cv2.VideoCapture(r"C:\Users\12137\Desktop\qiche.mp4")
#创建mog对象
mog = cv2.bgsegm.createBackgroundSubtractorMOG()
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(5,5))

#  循环读取视频
while True:
    ret,frame = cap.read()
    if ret == True:
          #把原始帧灰度化去噪
        gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
         #去噪
        blur = cv2.GaussianBlur(gray,(3,3),5)
        mask = mog.apply(blur)
        #   腐蚀
        erode = cv2.erode(mask,kernel)
        #膨胀
        dialte = cv2.dilate(erode,kernel,iterations=2)
        #消除小快,闭运算
        close = cv2.morphologyEx(dialte,cv2.MORPH_CLOSE,kernel)
        #轮廓
        con, result = cv2.findContours(close, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)                                                    # result 和 con 写反了
        for co in con:
            (x, y, w, h) = cv2.boundingRect(co)
            #过滤小举
            # 要求坐标点是整数
            cv2.rectangle(frame, (int(x), int(y)), (int(x + w), int(y + h)), (0,0,255) ,2)
            cv2.imshow("frame",frame)
    Key = cv2.waitKey(1)
    #用户按esc退出
    if Key == 27:
        break
# 释放资源
cap.release()
cv2.destroyAllWindows()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-3-9 21:24:42 | 显示全部楼层
新鱼油传不了图片,你传到这里来吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-9 21:26:15 | 显示全部楼层
isdkz 发表于 2023-3-9 21:24
新鱼油传不了图片,你传到这里来吧

我上传了你可以看见吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-9 21:26:55 | 显示全部楼层
lcx99 发表于 2023-3-9 21:26
我上传了你可以看见吗

看到了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-9 21:28:31 | 显示全部楼层

大佬帮忙看一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-9 22:07:25 | 显示全部楼层    本楼为最佳答案   
本帖最后由 isdkz 于 2023-3-9 22:12 编辑

第 25 行的 result, con = cv2.findContours(close, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)  把 result 和 con 写反了
import cv2
import numpy as np

cap = cv2.VideoCapture(r"C:\Users\12137\Desktop\qiche.mp4")
#创建mog对象
mog = cv2.bgsegm.createBackgroundSubtractorMOG()
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(5,5))

#  循环读取视频
while True:
    ret,frame = cap.read()
    if ret == True:
          #把原始帧灰度化去噪
        gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
         #去噪
        blur = cv2.GaussianBlur(gray,(3,3),5)
        mask = mog.apply(blur)
        #   腐蚀
        erode = cv2.erode(mask,kernel)
        #膨胀
        dialte = cv2.dilate(erode,kernel,iterations=2)
        #消除小快,闭运算
        close = cv2.morphologyEx(dialte,cv2.MORPH_CLOSE,kernel)
        #轮廓
        con, result = cv2.findContours(close, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)                                                    # result 和 con 写反了
        for co in con:
            (x, y, w, h) = cv2.boundingRect(co)
            #过滤小举
            # 要求坐标点是整数
            cv2.rectangle(frame, (int(x), int(y)), (int(x + w), int(y + h)), (0,0,255) ,2)
            cv2.imshow("frame",frame)
    Key = cv2.waitKey(1)
    #用户按esc退出
    if Key == 27:
        break
# 释放资源
cap.release()
cv2.destroyAllWindows()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2023-3-10 10:15:03 | 显示全部楼层
isdkz 发表于 2023-3-9 22:07
第 25 行的 result, con = cv2.findContours(close, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)  把 result  ...

谢谢大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-24 09:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表