-
大小: 2.74MB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2023-09-08
- 語(yǔ)言: Python
- 標(biāo)簽: opencv-pytho??不規(guī)則ROI??矩形區(qū)域??
資源簡(jiǎn)介
1.本資源主要是基于python-opencv進(jìn)行開發(fā)的,主要功能是用鼠標(biāo)提取不規(guī)則的ROI以便進(jìn)行后續(xù)處理。
2.https://blog.csdn.net/imwaters/article/details/80808491博文配套代碼,整理了一些參考資料。代碼基本是一樣的,有分的麻煩還是下載支持一下。
2.https://blog.csdn.net/imwaters/article/details/80808491博文配套代碼,整理了一些參考資料。代碼基本是一樣的,有分的麻煩還是下載支持一下。

代碼片段和文件信息
#?-*-?coding:?utf-8?-*-
“““
Created?on?Sat?Jun?23?15:16:16?2018
@author:?Zengxy_GUET
“““
import?cv2
import?numpy?as?np
global?img
global?point1?point2
lsPointsChoose=[]
tpPointsChoose=[]
pointsCount=0
count=0?
pointsMax=5
#-----------------------鼠標(biāo)操作相關(guān)------------------------------------------
#------------------------------------------------------------------------------
lsPointsChoose=[]
tpPointsChoose=[]
pointsCount=0
count=0
pointsMax=5
def?on_mouse(event?x?y?flags?param):
????global?img?point1?point2countpointsMax
????global?lsPointsChoosetpPointsChoose??#存入選擇的點(diǎn)
????global?pointsCount???#對(duì)鼠標(biāo)按下的點(diǎn)計(jì)數(shù)
????global?img2ROI_bymouse_flag
????img2?=?img.copy()???#此行代碼保證每次都重新再原圖畫??避免畫多了
#-----------------------------------------------------------
#????count=count+1
#????print(“callback_count“count)
#--------------------------------------------------------------
????if?event?==?cv2.EVENT_LBUTTONDOWN:?????????#左鍵點(diǎn)擊
????????pointsCount=pointsCount+1
????#???????為了保存繪制的區(qū)域,畫的點(diǎn)稍晚清零
????????if(pointsCount==pointsMax+1):
????????????pointsCount=0
????????????tpPointsChoose=[]
????????print(‘pointsCount:‘pointsCount)
????????point1?=?(xy)
????????print?(xy)
#????????畫出點(diǎn)擊的點(diǎn)
????????cv2.circle(img2?point1?10?(02550)?5)
#???????將選取的點(diǎn)保存到list列表里
????????lsPointsChoose.append([xy])??#用于轉(zhuǎn)化為darry?提取多邊形ROI
????????tpPointsChoose.append((xy))??#用于畫點(diǎn)
????????????#----------------------------------------------------------------------
????#將鼠標(biāo)選的點(diǎn)用直線鏈接起來
????????print(len(tpPointsChoose))
????????for?i?in?range(len(tpPointsChoose)-1):
????????????print(‘i‘i)
????????????cv2.line(img2tpPointsChoose[i]tpPointsChoose[i+1](00255)5)
#----------------------------------------------------------------------
#----------點(diǎn)擊到pointMax時(shí)可以提取去繪圖----------------
????????if(pointsCount==pointsMax):
#-----------繪制感興趣區(qū)域-----------
#----------------------------------
????????????ROI_byMouse()
????????????ROI_bymouse_flag=1
????????????lsPointsChoose=[]
#--------------------------------------------------------
????????cv2.imshow(‘src‘?img2)
#-------------------------右鍵按下清除軌跡-----------------------------
????if?event?==?cv2.EVENT_RBUTTONDOWN:?????????#右鍵點(diǎn)擊
????????print(“right-mouse“)
????????pointsCount=0
????????tpPointsChoose=[]
????????lsPointsChoose=[]
????????print(len(tpPointsChoose))
????????for?i?in?range(len(tpPointsChoose)-1):
????????????print(‘i‘i)
????????????cv2.line(img2tpPointsChoose[i]tpPointsChoose[i+1](00255)5)
????????cv2.imshow(‘src‘?img2)
#-----------------------------------------------------------------------
#%%
#--------------------------------------------------------------
def?ROI_byMouse():
????global?srcROIROI_flagmask2
????mask?=?np.zeros(img.shape?np.uint8)
????pts?=?np.array([lsPointsChoose]?np.int32)
#?pts.shape=(4,2)
????pts?=?pts.reshape((-112))?#?-1代表剩下的維度自動(dòng)計(jì)算
#?reshape?后的?pts.shape=(4。1,2)??
#--------------畫多邊形----
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件????6220854??2018-06-24?09:42??mask0623.bmp
?????文件???????5013??2018-06-25?23:17??polylineROI-mouse-only_180625.py
?????文件???????1967??2018-06-25?22:51??rectangle-mouse-only-180625.py
?????文件????6220854??2018-06-24?09:42??ROI0623.bmp
?????文件????6220854??2018-06-23?15:38??fr
-----------?---------??----------?-----??----
?????????????18669542????????????????????5
評(píng)論
共有 條評(píng)論