Python可視化目標(biāo)檢測框的實現(xiàn)代碼_第1頁
Python可視化目標(biāo)檢測框的實現(xiàn)代碼_第2頁
Python可視化目標(biāo)檢測框的實現(xiàn)代碼_第3頁
Python可視化目標(biāo)檢測框的實現(xiàn)代碼_第4頁
Python可視化目標(biāo)檢測框的實現(xiàn)代碼_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第Python可視化目標(biāo)檢測框的實現(xiàn)代碼目錄1引言2舉個栗子3實現(xiàn)3.1函數(shù)講解3.2讀入圖像3.3標(biāo)簽美化3.4角點(diǎn)美化3.5綜合效果4透明效果實現(xiàn)5擴(kuò)展應(yīng)用6總結(jié)7參考

1引言

隨著計算機(jī)視覺算法工程師的內(nèi)卷,從事目標(biāo)檢測的小伙伴們越來越多了.

很多時候我們費(fèi)了九牛二虎之力訓(xùn)練了一版模型,可是可視化出來的效果平淡無奇.

是不是有點(diǎn)太不給力啦,作為計算機(jī)視覺工程師,我們是不是應(yīng)該關(guān)注下如何優(yōu)雅地可視化我們模型地檢測結(jié)果呢

2舉個栗子

最常用的可視化目標(biāo)檢測結(jié)果的就是我們所說的矩形框,矩形框的畫法也可以分為好多中,我們以下圖進(jìn)行說明:

我們以上圖皮卡丘的矩形檢測框為例,左上為我們常用的不帶標(biāo)簽的輸出框,右上為YOLO系列美化帶標(biāo)簽后的矩形框,左下為四個角點(diǎn)美化后的矩形框,右下為帶標(biāo)簽的角點(diǎn)美化矩形框.

3實現(xiàn)

3.1函數(shù)講解

在opencv中,我們通常使用cv2.rectangle函數(shù)進(jìn)行矩形框的繪制,該函數(shù)的一般形式如下:

cv2.rectangle(image,start_point,end_point,color,thickness)

相應(yīng)的參數(shù)含義如下:

image:輸入圖像

start_point:矩形框左上點(diǎn)坐標(biāo)

end_point:矩形框右下點(diǎn)坐標(biāo)

color:矩形框顏色默認(rèn)BGR順序

thickness:線的粗細(xì),其中-1代表填充整個矩形

3.2讀入圖像

我們使用上述函數(shù),來畫我們的示例圖像:

img_name='./pikachu.jpg'

img=cv2.imread(img_name)

box=[140,16,468,390,"pikachu"]

box_color=(255,0,255)

cv2.rectangle(img,(box[0],box[1]),(box[2],box[3]),color=box_color,thickness=2)

結(jié)果如下:

左側(cè)為我們的原圖,右側(cè)為我們畫框的效果圖.

3.3標(biāo)簽美化

接下來我們來給矩形框添加標(biāo)簽,我們觀察上述畫圖函數(shù),注意最后一個參數(shù)thickness,如果此值等于-1,那么將對矩形框執(zhí)行填充效果.基于此,我們來寫標(biāo)簽美化代碼,如下:

defdraw_label_type(draw_img,bbox,label_color):

label=str(bbox[-1])

labelSize=cv2.getTextSize(label+'0',cv2.FONT_HERSHEY_SIMPLEX,0.5,2)[0]

ifbbox[1]-labelSize[1]-30:

cv2.rectangle(draw_img,

(bbox[0],bbox[1]+2),

(bbox[0]+labelSize[0],bbox[1]+labelSize[1]+3),

color=label_color,

thickness=-1

cv2.putText(draw_img,label,

(bbox[0],bbox[1]+labelSize+3),

cv2.FONT_HERSHEY_SIMPLEX,

0.5,

(0,0,0),

thickness=1

else:

cv2.rectangle(draw_img,

(bbox[0],bbox[1]-labelSize[1]-3),

(bbox[0]+labelSize[0],bbox[1]-3),

color=label_color,

thickness=-1

cv2.putText(draw_img,label,

(bbox[0],bbox[1]-3),

cv2.FONT_HERSHEY_SIMPLEX,

0.5,

(0,0,0),

thickness=1

)

上述代碼中,首先計算標(biāo)簽文本的大小,然后據(jù)標(biāo)簽文本大小進(jìn)行矩形填充,最后使用cv2.putText畫對應(yīng)的標(biāo)簽文本.

運(yùn)行效果如下:

左側(cè)為原圖,右側(cè)為添加文本標(biāo)簽后的結(jié)果圖.

3.4角點(diǎn)美化

上述添加完標(biāo)簽后,由于標(biāo)簽框和目標(biāo)矩形框顏色一致,邊界處不太容易區(qū)分,這里添加對角點(diǎn)美化的代碼,代碼如下:

defdraw_box_corner(draw_img,bbox,length,corner_color):

#TopLeft

cv2.line(draw_img,(bbox[0],bbox[1]),(bbox[0]+length,bbox[1]),corner_color,thickness=3)

cv2.line(draw_img,(bbox[0],bbox[1]),(bbox[0],bbox[1]+length),corner_color,thickness=3)

#TopRight

cv2.line(draw_img,(bbox[2],bbox[1]),(bbox[2]-length,bbox[1]),corner_color,thickness=3)

cv2.line(draw_img,(bbox[2],bbox[1]),(bbox[2],bbox[1]+length),corner_color,thickness=3)

#BottomLeft

cv2.line(draw_img,(bbox[0],bbox[3]),(bbox[0]+length,bbox[3]),corner_color,thickness=3)

cv2.line(draw_img,(bbox[0],bbox[3]),(bbox[0],bbox[3]-length),corner_color,thickness=3)

#BottomRight

cv2.line(draw_img,(bbox[2],bbox[3]),(bbox[2]-length,bbox[3]),corner_color,thickness=3)

cv2.line(draw_img,(bbox[2],bbox[3]),(bbox[2],bbox[3]-length),corner_color,thickness=3)

上述函數(shù)參數(shù)解釋如下:

draw_img輸入圖像

bbox目標(biāo)檢測框形式(x1,y1,x2,y2)

length直線長度

corner_color直線顏色

運(yùn)行結(jié)果如下:

左側(cè)為原圖,右側(cè)為添加角點(diǎn)美化后的結(jié)果圖.

3.5綜合效果

綜合上述標(biāo)簽美化和角點(diǎn)美化,可以得到二者綜合后的效果圖如下:

4透明效果實現(xiàn)

通過cv2.rectangle函數(shù)設(shè)置thickness我們可以得到填充后的圖像,進(jìn)而利用opencv中的cv2.add_weight函數(shù)可以實現(xiàn)透明效果.

示例如下:

左側(cè)為img,右側(cè)為填充后的draw_img,那么利用add_weight進(jìn)行加權(quán)的代碼如下:

alpha=0.8

gamma=0

out_img=cv2.addWeighted(img,alpha,draw_img,1-alpha,gamma)

運(yùn)行后的效果圖如下:

左側(cè)為alpha=0.5的效果圖,右側(cè)為alpha=0.8的效果圖.

和原圖放到一起進(jìn)行對比,如下:

是不是看上去優(yōu)雅多了…

5擴(kuò)展應(yīng)用

利用上述原理,我們可以方便地將透明效果從矩形框遷移至不規(guī)則封閉區(qū)域,樣例如下:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論