問題描述
如何操縱跟踪器區域使其變成方形? (How can I manipulate the tracker area to make it into a square shape?)
我目前正在開發一個關於相機跟踪應用程序的項目。當我不得不改變檢測到的物體的區域時,我發現沒有什麼麻煩。該區域必須轉換為正方形,以便在顯示到屏幕時變得更加合適和真實。
這是我正在處理的幾行代碼。
for cam, coll in _colls.items():
get all track
tracks = coll.getAllTracks() #tracks is a dictionary that stores the details of object that being detected.
for x in range(len(tracks)):
# get the selected area for croping
edge = tracks[x]['box']
crop_img = frame[int(edge[0]):int(edge[2]), int(edge[1]):int(edge[3])]
# edge[0] = ymin
# edge[1] = xmin
# edge[2] = ymax
# edge[3] = xmax
</code></pre>
根據該代碼,我得到了一個正在檢測對象的區域。
問題是當我得到了邊緣,它並不總是方形的,它也可以是矩形的。
參考解法
方法 1:
You have to compute the width and height of the area. Compute the difference between the width and the height and enlarge the smaller side of the area. For isntance:
left, right, top, bottom = edge[0], edge[1], edge[2], edge[3]
width = right ‑ left
height = bottom ‑ top
delta = width ‑ height
if delta > 0:
top ‑= delta / 2
bottom += delta / 2
else
left ‑= ‑delta / 2
right += ‑delta / 2
crop_img = frame[int(left):int(top), int(right):int(bottom)]
(by Idhar Dzulfikar、Rabbid76)
參考文件