logo
Loading...

draw_labels函式內程式碼的一些疑問 - Cupoy

各位大大們好,我按照了本教學也嘗試製作偵測口罩的程式,但是問題出現在webcam_mask.py都沒...

draw_labels函式內程式碼的一些疑問

2021/02/21 下午 00:40
支援口罩辨識的智慧門禁系統
Jimmy Chiang
觀看數:18
回答數:2
收藏數:0

各位大大們好,我按照了本教學也嘗試製作偵測口罩的程式,但是問題出現在webcam_mask.py都沒有輸出偵測到物體的座標,於是我查看webcam_mask.py內的程式碼 發現 boxes 是有值的,為 [[248, 244, 210, 243]],這代表 yolo 是有偵測到人的 於是再往下看draw_labels函式,發現在63行部分有些疑惑,以下為63行開始的程式碼 ```python3 for i in range(len(boxes)): # 逐個跑boxes內的資料 if i>0: # 這行就不懂為何是大於0 x, y, w, h = boxes[i] label = str(classes[class_ids[i]]) conf = confs[i] color = colors[i%3] ``` 以上是我的理解,我不懂為何 i 要大於 0。因為如我的情況所說 boxes = [[248, 244, 210, 243]],這樣無論如何都不會跑進 i>0 的迴圈內。而且這行指令會造成唯有偵測到兩個物體以上才會開始畫出第二個物體,永遠忽略了第一個物體。 有大大能解釋這行指令的用意嗎Orz

回答列表

  • 2021/02/23 下午 04:48
    Jeffrey
    贊同數:0
    不贊同數:0
    留言數:1

    Hi, 你好, i in range(len(boxes) --> 只要 boxes 有值, 長度大於1, 表示有偵測到物件即會進入迴圈 所以設 i>0 ,

  • 2021/02/24 下午 02:40
    張維元 (WeiYuan)
    贊同數:0
    不贊同數:0
    留言數:1

    嗨,你好
    可能要確認一下是否有處理?如果沒有的話,那的確就是會跳過第 0 筆資料。不然就是寫錯了, 「長度大於1 」並不是「i >0 」這邊可能要注意一下。

    嗨,你好,我是維元,持續在不同的平台發表對 #資料科學、 #網頁開發 或 #軟體職涯 相關的文章。如果對於內文有疑問都歡迎與我們進一步的交流,都可以追蹤我的 Facebook技術部落格 ,也會不定時的舉辦分享活動,一起來玩玩吧 ヽ(●´∀`●)ノ 以下分享一些我近期發表跟資料科學有關的文章,歡迎大家持續追蹤: ■ 資料分析工具那麼多,該怎麼選? 🛠️
    真.資料團隊與分工
    觀察資料的 N 件事 🔖
    資料前處理必須要做的事 - 資料清理與型態調整