首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >frame.shape NameError:未定义名称“frame”

frame.shape NameError:未定义名称“frame”
EN

Stack Overflow用户
提问于 2022-04-19 01:26:16
回答 1查看 213关注 0票数 0

我对Python一无所知,但是我有一个需要处理的任务,所以我需要实现一些函数。下面是我的密码。当我运行Python时,

追溯(最近一次调用):文件"C:\Users\user\Desktop\bodypix\bodypix.py",第80行,在frame.shape NameError: name 'frame‘中未定义

将检查此错误。为什么会出现此错误?如果你知道如何解决这个问题,我将非常感谢你的帮助。

代码语言:javascript
运行
复制
import tensorflow as tf
from tf_bodypix.api import download_model, load_model, BodyPixModelPaths
import cv2
from matplotlib import pyplot as plt
import numpy as np


# # 2. Detections

# In[2]:

load_model(download_model(BodyPixModelPaths.MOBILENET_FLOAT_50_STRIDE_16))

# In[3]:

bodypix_model = load_model(download_model(BodyPixModelPaths.MOBILENET_FLOAT_50_STRIDE_16))

# In[27]:

# get vid cap device
cap = cv2.VideoCapture(0) 

# loop through frame
while cap.isOpened(): 
    ret, frame = cap.read()
    
    # BodyPix Detections
    result = bodypix_model.predict_single(frame)
    mask = result.get_mask(threshold=0.5).numpy().astype(np.uint8)
    masked_image = cv2.bitwise_and(frame, frame, mask=mask)
    
    # Show result to user on desktop
    cv2.imshow('BodyPix', masked_image)
    
    # Break loop outcome 
    if cv2.waitKey(10) & 0xFF == ord('q'):
        break

cap.release() # Releases webcam or capture device
cv2.destroyAllWindows() # Closes imshow frames

# # 3. Add Virtual Background

# In[12]:

img = cv2.imread('beach.jpg')
img = img[:480, :640, :]


# In[13]:


plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))

# In[14]:

img.shape


# In[15]:

frame.shape

# In[24]:

plt.imshow(mask)


# In[23]:


plt.imshow(np.where(np.add(mask, -1) == -1, 1, np.add(mask, -1)))

# In[ ]:

# get vid cap device
cap = cv2.VideoCapture(0) 

# loop through frame
while cap.isOpened(): 
    ret, frame = cap.read()
    
    # BodyPix Detections
    result = bodypix_model.predict_single(frame)
    mask = result.get_mask(threshold=0.5).numpy().astype(np.uint8)
    masked_image = cv2.bitwise_and(frame, frame, mask=mask)
    
    # Apply virtual background
    neg = np.add(mask, -1)
    inverse = np.where(neg==-1, 1, neg).astype(np.uint8)
    masked_background = cv2.bitwise_and(img, img, mask=inverse)
    final = cv2.add(masked_image, masked_background)
    
    # Show result to user on desktop
    cv2.imshow('BodyPix', final)
    
    # Break loop outcome 
    if cv2.waitKey(10) & 0xFF == ord('q'):
        break

cap.release() # Releases webcam or capture device
cv2.destroyAllWindows() # Closes imshow frames
EN

回答 1

Stack Overflow用户

发布于 2022-04-19 01:37:44

在分配frame.shape之前,您正在引用frame。注意img.shape是如何允许的,因为在此之前有一个赋值:img = cv2.imread('beach.jpg')

阅读文档,看看应该分配给什么“框架”。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71918686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档