簡體   English   中英

類型錯誤:列表索引必須是整數或切片,而不是 str(復制)

[英]TypeError: list indices must be integers or slices, not str (copy)

我是 python 的新用戶,感謝您的幫助。

我訓練了 yolov5 模式來檢測“僵屍”和“幽靈”

model = torch.hub.load('yolov5', 'custom', source='local', path='yolov5/runs/train/exp2/weights/best.pt')
while True: 
    screen = pyautogui.screenshot(region=(0,535, 1900, 475))
    corrected_colors = cv2.cvtColor(screen_array, cv2.COLOR_RGB2BGR)
    results = model(corrected_colors)
    
    cv2.imshow('YOLO', np.squeeze(results.render()))

    if cv2.waitKey(1) & 0xFF==ord('q'):
        break

cv2.destroyAllWindows()

在此處輸入圖像描述

這是我第一次

但我需要左鍵點擊僵屍

time.sleep(2)

while True: 
    screen = pyautogui.screenshot(region=(0,535, 1900, 475))
    screen_array = np.array(screen)
    corrected_colors = cv2.cvtColor(screen_array, cv2.COLOR_RGB2BGR)
    
    results = model(corrected_colors)
    
    df = results.pandas().xyxy
    df = df[df['class'] == 0]
    
    if df.empty:
        pass
    else:
        if df.iloc[0]['confidence'] > 0.60:
            xmin, ymin, xmax, ymax = df.iloc[0]['xmin'], df.iloc[0]['ymin'], df.iloc[0]['xmax'], df.iloc[0]['ymax']
            center_x = int((xmin + xmax) / 2)
            center_y = int((ymin + ymax) / 2)
            pyautogui.click(center_x, center_y)
    
    cv2.imshow('YOLO', np.squeeze(results.render()))

    if cv2.waitKey(1) & 0xFF==ord('q'):
        break
cv2.destroyAllWindows()

但我有這個錯誤

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[30], line 11
      8 results = model(corrected_colors)
     10 df = results.pandas().xyxy
---> 11 df = df[df['class'] == 0]
     13 if df.empty:
     14     pass

TypeError: list indices must be integers or slices, not str

有人可以給我建議嗎? 提前致謝

可以通過 integer 值的索引訪問列表中的元素Python - 數據結構 - 列表了解此錯誤原因的示例如下,

a = ['{"id":9,"name":"Foo"}']
print(a['id'])

它會拋出類型錯誤。

通過使用 integer 索引訪問列表元素的恰當方式,

a = ['{"id":9,"name":"Foo"}']
print(a[0])

上面代碼為Output如下,

{"id":9,"name":"Foo"}

如果您有如下定義的字典列表,訪問列表中元素的適當方法如下,

a = [{"id":9,"name":"Foo"}]
print(a[0]['id])

這將給出 output 值 '9'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM