亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python OpenCV學(xué)習(xí)之圖形繪制總結(jié)

 更新時(shí)間:2022年01月06日 08:51:14   作者:一個(gè)熱愛(ài)學(xué)習(xí)的深度渣渣  
在圖像的任務(wù)中,不管是圖像檢測(cè)還是圖像識(shí)別,我們都需要通過(guò)繪制圖形和繪制文字對(duì)處理的結(jié)果進(jìn)行說(shuō)明,本篇就詳細(xì)介紹下OpenCV中的圖形的繪制,感興趣的可以了解一下

背景

使用OpenCV進(jìn)行圖形繪制是一種必備的技能,在圖像的任務(wù)中,不管是圖像檢測(cè)還是圖像識(shí)別,我們都需要通過(guò)繪制圖形和繪制文字對(duì)處理的結(jié)果進(jìn)行說(shuō)明,本篇就詳細(xì)介紹下圖形的繪制;

一、畫(huà)線(xiàn)

line(圖像,起始點(diǎn),終點(diǎn),顏色,線(xiàn)寬,線(xiàn)形):一般只需要前面四個(gè)參數(shù)即可;

代碼案例:

cv2.line(img, (20, 100), (20, 500), (0,0,255))

畫(huà)出了一條Y方向上的紅色線(xiàn)段;

二、畫(huà)矩形

這個(gè)相對(duì)來(lái)說(shuō)是應(yīng)用最多的一種方法了,往往在檢測(cè)項(xiàng)目中返回目標(biāo)的結(jié)果就是(x,y,w,h)或者(x1,y1,x2,y2)這兩種形式,當(dāng)然我們這里繪制需要的是第二種形式,而通過(guò)左上角點(diǎn)計(jì)算右下角也是很簡(jiǎn)單的;

cv2.rectangle(img, (x1,y1), (x2,y2), (0,0,255), 3)    # 后面兩個(gè)參數(shù)為顏色和線(xiàn)長(zhǎng)

簡(jiǎn)單展示一下我用DeepFashion數(shù)據(jù)畫(huà)出矩形框的效果:

三、畫(huà)圓

畫(huà)圓在應(yīng)用的其實(shí)并不多,更多的是畫(huà)點(diǎn)的操作,例如關(guān)鍵點(diǎn)的任務(wù),需要將關(guān)鍵點(diǎn)在目標(biāo)圖像上顯示出來(lái);而實(shí)際上點(diǎn)就是一個(gè)實(shí)心圓,這里就介紹畫(huà)圓和畫(huà)點(diǎn)的兩種形式吧。

# 函數(shù)
cv2.circle(img, (x,y), 半徑長(zhǎng)度, (0,0,255), -1)        // 畫(huà)一個(gè)實(shí)心圓(點(diǎn)),最后參數(shù)設(shè)置為負(fù)數(shù)
cv2.circle(img, (x,y), 半徑長(zhǎng)度, (0,0,255), 4)        // 畫(huà)一個(gè)空心圓

下面還是展示我畫(huà)出關(guān)鍵點(diǎn)的一個(gè)效果:

四、畫(huà)多邊形

繪制多邊形在實(shí)際應(yīng)用中也很常見(jiàn),例如分割以及OCR的任務(wù),往往需要用多個(gè)點(diǎn)描述出目標(biāo)的輪廓。

函數(shù)原型如下:

polylines(img,點(diǎn)集,是否閉環(huán),顏色…),注意這里的點(diǎn)集必須是32位的

案例代碼:

pot = np.array([(100, 100), (200, 200), (300, 400)], np.int32)
cv2.polylines(img, [pot], True, (0, 0, 255))
# 如果輸出填充的多邊形,用以下api
cv2.fillPoly(img, [pot], (0, 0, 255))

五、畫(huà)文本

繪制文本在實(shí)際項(xiàng)目中,往往用來(lái)標(biāo)記類(lèi)別,對(duì)于一些結(jié)果輸出,可以通過(guò)文本的方式繪制到圖像上,便于觀(guān)察結(jié)果和驗(yàn)證;

函數(shù)原型:

putText(img,字符串,起始點(diǎn),字體,字號(hào)…)

案例代碼:

cv2.putText(img, "Hello World", (100, 100), 字體, 3, (0,0,255))

六、鼠標(biāo)繪制

實(shí)現(xiàn)功能:

可通過(guò)鼠標(biāo)進(jìn)行基本圖形的繪制:按下l畫(huà)線(xiàn),按下r畫(huà)矩形,按下c畫(huà)圓;

import cv2
import numpy as np

star = (0, 0)
select = 0
img = np.zeros((480, 640, 3), np.uint8)

// 定義鼠標(biāo)回調(diào)函數(shù)
def mouse_callback(event, x, y, flags, userdata):
    global star,select
    if (event & cv2.EVENT_LBUTTONDOWN == cv2.EVENT_LBUTTONDOWN):
        star = (x, y)
    elif (event & cv2.EVENT_LBUTTONUP == cv2.EVENT_LBUTTONUP):
        if select == 0:
            cv2.line(img, star, (x, y), (0, 0, 255))
        elif select == 1:
            cv2.rectangle(img, star, (x, y), (0, 0, 255))
        elif select == 2:
            a = (x - star[0])
            b = (y - star[1])
            r = int((a**2+b**2)**0.5)
            cv2.circle(img, star, r, (0, 0, 255))
        else:
            print('no shape')
            
cv2.namedWindow('drawshape', cv2.WINDOW_NORMAL)
cv2.setMouseCallback('drawshape', mouse_callback, "111")
while True:
    cv2.imshow('drawshape', img)
    key=cv2.waitKey(1) & 0xFF
    if key == ord('q'):
        break
    elif key == ord('l'):
        select = 0
    elif key == ord('r'):
        select = 1
    elif key == ord('c'):
        select = 2

下圖是我自己隨意畫(huà)的結(jié)果,大家可以創(chuàng)造出更有趣的圖畫(huà);

總結(jié)

常用的圖形繪制就是上面的幾種,其中中文文本還存在問(wèn)題(需要引入字體樣式文件),在后續(xù)會(huì)進(jìn)行補(bǔ)充;之后將學(xué)習(xí)圖形學(xué)的一些進(jìn)階知識(shí),也是為后續(xù)實(shí)戰(zhàn)做準(zhǔn)備;

到此這篇關(guān)于Python OpenCV學(xué)習(xí)之圖形繪制詳解的文章就介紹到這了,更多相關(guān)Python OpenCV圖形繪制內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Jupyter Notebook遠(yuǎn)程登錄及密碼設(shè)置操作

    Jupyter Notebook遠(yuǎn)程登錄及密碼設(shè)置操作

    今天小編就為大家分享一篇Jupyter Notebook遠(yuǎn)程登錄及密碼設(shè)置操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04
  • Python中scatter散點(diǎn)圖及顏色整理大全

    Python中scatter散點(diǎn)圖及顏色整理大全

    python自帶的scatter函數(shù)參數(shù)中顏色和大小可以輸入列表進(jìn)行控制,即可以讓不同的點(diǎn)有不同的顏色和大小,下面這篇文章主要給大家介紹了關(guān)于Python中scatter散點(diǎn)圖及顏色整理大全的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • pycharm設(shè)置虛擬環(huán)境與更換鏡像教程

    pycharm設(shè)置虛擬環(huán)境與更換鏡像教程

    這篇文章主要介紹了pycharm設(shè)置虛擬環(huán)境與更換鏡像教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • 使用Streamlit和Pandas實(shí)現(xiàn)帶有可點(diǎn)擊鏈接的數(shù)據(jù)表格

    使用Streamlit和Pandas實(shí)現(xiàn)帶有可點(diǎn)擊鏈接的數(shù)據(jù)表格

    這篇文章主要為大家詳細(xì)介紹了如何利用?Streamlit?和?Pandas?在?Python?中創(chuàng)建一個(gè)帶有可點(diǎn)擊鏈接的數(shù)據(jù)表格,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • python基本語(yǔ)法練習(xí)實(shí)例

    python基本語(yǔ)法練習(xí)實(shí)例

    下面小編就為大家?guī)?lái)一篇python基本語(yǔ)法練習(xí)實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • Django如何實(shí)現(xiàn)上傳圖片功能

    Django如何實(shí)現(xiàn)上傳圖片功能

    這篇文章主要介紹了Django如何實(shí)現(xiàn)上傳圖片功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Flask框架Flask-Login用法分析

    Flask框架Flask-Login用法分析

    這篇文章主要介紹了Flask框架Flask-Login用法,結(jié)合實(shí)例形式分析了Flask-Login插件進(jìn)行登錄驗(yàn)證的相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2018-07-07
  • python實(shí)現(xiàn)Pyecharts實(shí)現(xiàn)動(dòng)態(tài)地圖(Map、Geo)

    python實(shí)現(xiàn)Pyecharts實(shí)現(xiàn)動(dòng)態(tài)地圖(Map、Geo)

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)Pyecharts實(shí)現(xiàn)動(dòng)態(tài)地圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • python中模塊的__all__屬性詳解

    python中模塊的__all__屬性詳解

    這篇文章主要介紹了python中模塊的__all__屬性詳解,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-10-10
  • python注冊(cè)釘釘回調(diào)事件的實(shí)現(xiàn)

    python注冊(cè)釘釘回調(diào)事件的實(shí)現(xiàn)

    釘釘有回調(diào)事件流程,本文主要介紹了python注冊(cè)釘釘回調(diào)事件的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08

最新評(píng)論