欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > python+opencv圖像分割實現(xiàn)分割不規(guī)則ROI區(qū)域方法匯總

python+opencv圖像分割實現(xiàn)分割不規(guī)則ROI區(qū)域方法匯總

熱門標簽:遼寧400電話辦理多少錢 蘇州電銷機器人十大排行榜 幫人做地圖標注收費算詐騙嗎 悟空智電銷機器人6 溫州旅游地圖標注 電信營業(yè)廳400電話申請 江蘇房產(chǎn)電銷機器人廠家 外呼不封號系統(tǒng) 荊州云電銷機器人供應(yīng)商

在圖像分割領(lǐng)域,一個重要任務(wù)便是分割出感興趣(ROI)區(qū)域。如果是簡易的矩形ROI區(qū)域其實是非常容易分割的,opencv的官方python教程里也有教到最簡易的矩形ROI分割(剪裁),其本質(zhì)是多維數(shù)組(矩陣)的切片。但是現(xiàn)實情況中,ROI是不規(guī)則的多邊形,也可能是曲線邊界,那么該如何分割出來呢?下面總結(jié)幾種思路。

可能只提供核心部分的代碼示例,具體應(yīng)用要結(jié)合你自己的項目來修正。

一、已知邊界坐標,直接畫出多邊形

例:最基礎(chǔ)的畫個四邊形

# 定義四個頂點坐標
pts = np.array([[10, 5],  [50, 10], [70, 20], [20, 30]], np.int32)
# 頂點個數(shù):4,矩陣變成4*1*2維
# OpenCV中需要將多邊形的頂點坐標變成頂點數(shù)×1×2維的矩陣
# 這里 reshape 的第一個參數(shù)為-1, 表示“任意”,意思是這一維的值是根據(jù)后面的維度的計算出來的
pts = pts.reshape((-1, 1, 2))
cv2.polylines(img, [pts], True, (0, 255, 255))

上例中,img是你的畫布原圖。pts你可以隨便改,改成自己的邊界點。注意cv2.polylines中參數(shù)pts要加[ ]。

二、通過形態(tài)學(xué)操作產(chǎn)生Mask

腐蝕、膨脹之后,產(chǎn)生二值化(非黑即白)的mask,然后和圖像做與運算。

腐蝕膨脹的操作方法簡單復(fù)習(xí)一下:

kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (10, 10))  # 矩形結(jié)構(gòu):MORPH_RECT
kernel1 = cv2.getStructuringElement(cv2.MORPH_RECT, (15, 15))  # 橢圓結(jié)構(gòu):MORPH_ELLIPSE
img = cv2.erode(img, kernel)  # 腐蝕 
img = cv2.dilate(img, kernel)  # 膨脹

我們都知道,腐蝕膨脹完后會得到一個二值化的掩模(mask)。

    mask = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR) #img是腐蝕膨脹完的圖片
    ROI = cv2.bitwise_and(mask, oriimg) #oriimg是原始圖片
    cv2.imshow('ROI',ROI)
    if cv2.waitKey(500) and 0xff == ord('q'):
        cv2.destroyAllWindows()

 講原始圖片和mask做一個掩模就可以得到最終圖像了(例子此處就不舉了因為一些圖片涉及科研內(nèi)容,paper還未發(fā)表,請自行試一下吧)。

三、人機交互式

用鼠標點擊,產(chǎn)生多邊形。

這樣是比較精確的,比較是人工操作,但是比較麻煩,如果有上萬張圖片,你不可能每張都自己鼠標去分割出來一下。但是這個方法可以用于獲取ROI的ground-truth,然后用來和機器分割的結(jié)果做對比,計算準確率、召回率等評價指標!所以學(xué)一下還是有用的。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Wed May 29 19:18:28 2019
@author: youxinlin
"""
 
import cv2
import numpy as np
 
# -----------------------鼠標操作相關(guān)------------------------------------------
lsPointsChoose = []
tpPointsChoose = []
pointsCount = 0
count = 0
pointsMax = 6
def on_mouse(event, x, y, flags, param):
    global img, point1, point2, count, pointsMax
    global lsPointsChoose, tpPointsChoose  # 存入選擇的點
    global pointsCount  # 對鼠標按下的點計數(shù)
    global img2, ROI_bymouse_flag
    img2 = img.copy()  # 此行代碼保證每次都重新再原圖畫  避免畫多了
    # -----------------------------------------------------------
    #    count=count+1
    #    print("callback_count",count)
    # --------------------------------------------------------------
 
    if event == cv2.EVENT_LBUTTONDOWN:  # 左鍵點擊
        pointsCount = pointsCount + 1
        # 感覺這里沒有用?2018年8月25日20:06:42
        # 為了保存繪制的區(qū)域,畫的點稍晚清零
        # if (pointsCount == pointsMax + 1):
        #     pointsCount = 0
        #     tpPointsChoose = []
        print('pointsCount:', pointsCount)
        point1 = (x, y)
        print (x, y)
        # 畫出點擊的點
        cv2.circle(img2, point1, 10, (0, 255, 0), 2)
 
        # 將選取的點保存到list列表里
        lsPointsChoose.append([x, y])  # 用于轉(zhuǎn)化為darry 提取多邊形ROI
        tpPointsChoose.append((x, y))  # 用于畫點
        # ----------------------------------------------------------------------
        # 將鼠標選的點用直線連起來
        print(len(tpPointsChoose))
        for i in range(len(tpPointsChoose) - 1):
            print('i', i)
            cv2.line(img2, tpPointsChoose[i], tpPointsChoose[i + 1], (0, 0, 255), 2)
        # ----------------------------------------------------------------------
        # ----------點擊到pointMax時可以提取去繪圖----------------
 
        cv2.imshow('src', img2)
        
# -------------------------右鍵按下清除軌跡-----------------------------
    if event == cv2.EVENT_RBUTTONDOWN:  # 右鍵點擊
        print("right-mouse")
        pointsCount = 0
        tpPointsChoose = []
        lsPointsChoose = []
        print(len(tpPointsChoose))
        for i in range(len(tpPointsChoose) - 1):
            print('i', i)
            cv2.line(img2, tpPointsChoose[i], tpPointsChoose[i + 1], (0, 0, 255), 2)
        cv2.imshow('src', img2)
 
    # -------------------------雙擊 結(jié)束選取-----------------------------
    if event == cv2.EVENT_LBUTTONDBLCLK: 
    # -----------繪制感興趣區(qū)域-----------
        ROI_byMouse()
        ROI_bymouse_flag = 1
        lsPointsChoose = []
        
 
def ROI_byMouse():
    global src, ROI, ROI_flag, mask2
    mask = np.zeros(img.shape, np.uint8)
    pts = np.array([lsPointsChoose], np.int32)  # pts是多邊形的頂點列表(頂點集)
    pts = pts.reshape((-1, 1, 2))
    # 這里 reshape 的第一個參數(shù)為-1, 表明這一維的長度是根據(jù)后面的維度的計算出來的。
    # OpenCV中需要先將多邊形的頂點坐標變成頂點數(shù)×1×2維的矩陣,再來繪制
 
    # --------------畫多邊形---------------------
    mask = cv2.polylines(mask, [pts], True, (255, 255, 255))
    ##-------------填充多邊形---------------------
    mask2 = cv2.fillPoly(mask, [pts], (255, 255, 255))
    cv2.imshow('mask', mask2)
    cv2.imwrite('mask.jpg', mask2)
    image,contours, hierarchy = cv2.findContours(cv2.cvtColor(mask2, cv2.COLOR_BGR2GRAY), cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)
    ROIarea = cv2.contourArea(contours[0])
    print("ROIarea:",ROIarea)
    ROI = cv2.bitwise_and(mask2, img)
    cv2.imwrite('ROI.jpg', ROI)
    cv2.imshow('ROI', ROI)
 
img = cv2.imread('3.png')
# ---------------------------------------------------------
# --圖像預(yù)處理,設(shè)置其大小
# height, width = img.shape[:2]
# size = (int(width * 0.3), int(height * 0.3))
# img = cv2.resize(img, size, interpolation=cv2.INTER_AREA)
# ------------------------------------------------------------
ROI = img.copy()
cv2.namedWindow('src')
cv2.setMouseCallback('src', on_mouse)
cv2.imshow('src', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

你可以增加更多的功能。。。附:鼠標點擊事件 :

'''
EVENT_FLAG_ALTKEY = 32  摁住Alt
EVENT_FLAG_CTRLKEY = 8  摁住Ctrl
EVENT_FLAG_LBUTTON = 1  摁住左鍵
EVENT_FLAG_MBUTTON = 4  摁住中鍵
EVENT_FLAG_RBUTTON = 2  摁住右鍵
EVENT_FLAG_SHIFTKEY = 16 摁住Shift
EVENT_LBUTTONDBLCLK = 7  左鍵雙擊
EVENT_LBUTTONDOWN = 1  左鍵擊下
EVENT_LBUTTONUP = 4   左鍵彈起
EVENT_MBUTTONDBLCLK = 9  中鍵雙擊
EVENT_MBUTTONDOWN = 3  中鍵擊下
EVENT_MBUTTONUP = 6   中鍵彈起
EVENT_MOUSEHWHEEL = 11  滾動條向左,flags>0。向右,flags0
EVENT_MOUSEMOVE = 0   鼠標移動
EVENT_MOUSEWHEEL = 10  滾動條向上,flags>0。向下,flags0
EVENT_RBUTTONDBLCLK = 8  中鍵雙擊
EVENT_RBUTTONDOWN = 2  中鍵擊下
EVENT_RBUTTONUP = 5   中鍵彈起
'''

到此這篇關(guān)于python+opencv圖像分割實現(xiàn)分割不規(guī)則ROI區(qū)域方法匯總的文章就介紹到這了,更多相關(guān)opencv 分割不規(guī)則ROI區(qū)域內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 基于OpenCV實現(xiàn)圖像分割
  • Python使用OpenCV和K-Means聚類對畢業(yè)照進行圖像分割
  • C++中實現(xiàn)OpenCV圖像分割與分水嶺算法
  • python用opencv完成圖像分割并進行目標物的提取
  • Opencv實現(xiàn)用于圖像分割分水嶺算法
  • OpenCV圖像分割中的分水嶺算法原理與應(yīng)用詳解
  • openCV實現(xiàn)圖像分割

標簽:臺灣 黃山 景德鎮(zhèn) 濟南 欽州 喀什 宿遷 三沙

巨人網(wǎng)絡(luò)通訊聲明:本文標題《python+opencv圖像分割實現(xiàn)分割不規(guī)則ROI區(qū)域方法匯總》,本文關(guān)鍵詞  python+opencv,圖像,分割,實現(xiàn),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《python+opencv圖像分割實現(xiàn)分割不規(guī)則ROI區(qū)域方法匯總》相關(guān)的同類信息!
  • 本頁收集關(guān)于python+opencv圖像分割實現(xiàn)分割不規(guī)則ROI區(qū)域方法匯總的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    亚洲欧美卡通动漫| 亚洲人成在线播放网站岛国| 亚洲超碰97人人做人人爱| 97se亚洲国产综合在线| 极品久久久久久| 国产精品国产三级国产aⅴ中文 | 青青草精品视频| 免费的av网站| 日韩一区二区三区三四区视频在线观看| 亚洲一区自拍偷拍| 亚洲精品乱码久久久久久蜜桃欧美| 欧美日韩国产综合一区二区| 一区二区三区毛片| 中文字幕视频观看| 欧美一区二区三区公司| 日本亚洲天堂网| 人妻一区二区视频| 国产三级一区二区三区| 26uuuu精品一区二区| 免费在线成人网| 免费一级做a爰片久久毛片潮| 久久综合一区二区| 国产精品自拍在线| 欧美一区二区三区爽爽爽| 亚洲欧美日韩久久| 一边摸一边做爽的视频17国产| 日韩一区二区精品在线观看| 麻豆91精品91久久久的内涵| 国产精品69久久久久孕妇欧美| 国产精品卡一卡二卡三| 99re6这里只有精品视频在线观看| 欧美日韩在线播放一区| 男女男精品视频网| 极品色av影院| 悠悠色在线精品| 噜噜噜在线视频| 久久久www免费人成精品| 9人人澡人人爽人人精品| 欧美日本一区二区| 精品一区二区三区的国产在线播放| 国产中文字幕久久| 一区二区三区四区视频精品免费| 荫蒂被男人添免费视频| 久久久久青草大香线综合精品| 成人精品国产免费网站| 欧美日韩国产一级二级| 毛片av一区二区| 国产女人18水真多毛片18精品| 一区二区三区中文在线| 国产三级国产精品| 国产精品久久午夜| youjizz.com国产| 久久久精品天堂| 91老司机福利 在线| 日韩一区二区免费电影| 成人一级视频在线观看| 91精品国产综合久久精品性色 | 自拍偷拍视频亚洲| 自拍偷自拍亚洲精品播放| 日本五十肥熟交尾| 国产欧美久久久精品影院| 久久久久国产免费| 国产欧美一区二区精品仙草咪| 岛国大片在线免费观看| 久久精子c满五个校花| wwwxxxx在线观看| 久久精品视频一区| 亚洲色图欧美日韩| 国产精品国产三级国产aⅴ入口| 国产伦精品一区三区精东| 丰腴饱满的极品熟妇| 亚洲欧美偷拍三级| 国产毛片欧美毛片久久久| 亚洲综合在线视频| 你懂得在线观看| 日韩成人av影视| 在线观看免费亚洲| 国产美女久久久久| 91精品国产综合久久小美女| 成人sese在线| 久久亚洲综合av| 波多野结衣加勒比| 亚洲精选视频在线| 亚洲人与黑人屁股眼交| 日本91福利区| 欧美日韩高清在线| av不卡免费电影| 国产亚洲欧洲997久久综合| 苍井空张开腿实干12次| 亚洲欧洲精品一区二区三区| 久久成人激情视频| 日韩和欧美一区二区三区| 日本高清不卡aⅴ免费网站| 国产精品原创巨作av| 日韩精品中文字幕在线一区| 亚洲综合中文网| 最新成人av在线| 国产高清视频免费在线观看| 美女视频黄频大全不卡视频在线播放| 欧美影视一区二区三区| 不卡免费追剧大全电视剧网站| 久久色中文字幕| 永久免费看mv网站入口78| 天堂影院一区二区| 欧美日韩中字一区| 91亚洲精品乱码久久久久久蜜桃| 国产欧美一区视频| 刘亦菲国产毛片bd| 激情亚洲综合在线| 亚洲精品一区二区三区福利| 久久精品综合视频| 日韩激情视频在线观看| 制服丝袜亚洲精品中文字幕| 亚洲熟女乱综合一区二区| 亚洲男人的天堂在线aⅴ视频| 9999热视频| 丁香激情综合国产| 国产精品嫩草影院av蜜臀| 少妇高潮在线观看| 国产成人小视频| 国产欧美1区2区3区| 国产视频精品免费| 久久久久99精品国产片| 麻豆精品免费视频| 久久99久国产精品黄毛片色诱| 日韩久久久精品| 亚洲精品午夜视频| 国产制服丝袜一区| 国产欧美日韩视频一区二区| 最新日韩免费视频| 成人免费视频视频在线观看免费 | 国产一区二区三区在线视频观看| 国产成人福利片| 国产精品电影一区二区| 老湿机69福利| 91老师国产黑色丝袜在线| 亚洲一区视频在线观看视频| 欧美人妖巨大在线| 三级男人添奶爽爽爽视频| 蜜桃视频第一区免费观看| 久久影院电视剧免费观看| 91香蕉国产视频| 成人黄色国产精品网站大全在线免费观看| 国产精品久久久久aaaa樱花 | 国产精品一区二区久激情瑜伽| 欧美激情在线看| 澳门黄色一级片| 午夜性福利视频| 日本一不卡视频| 久久久99精品免费观看| 澳门黄色一级片| 亚洲一区二区三区四区av| 美女国产一区二区三区| 欧美激情在线观看视频免费| 色婷婷精品久久二区二区蜜臀av| 中文字幕第10页| 蜜臀久久99精品久久久久久9| 久久久久久久久99精品| 色婷婷综合久久久中文字幕| 中文字幕99页| 国产在线一区二区综合免费视频| 国产精品国产馆在线真实露脸| 在线精品视频一区二区三四| 亚洲 欧美 日韩在线| 国模无码大尺度一区二区三区| 中文字幕在线一区免费| 欧美人动与zoxxxx乱| 精品人妻无码一区二区三区换脸 | 国产在线不卡一区| 亚洲品质自拍视频网站| 日韩一区二区三区在线视频| 国产在线免费看| 黑森林av导航| 国产精品1024| 亚洲一区二区三区四区的| 久久综合狠狠综合久久综合88 | 亚洲视频免费在线观看| 欧美一区二区三区小说| 182在线观看视频| 亚洲图片综合网| 国产91精品露脸国语对白| 色天天综合色天天久久| 黄色正能量网站| 不卡一二三区首页| 美女久久久精品| 依依成人精品视频| 久久久久久黄色| 欧美日韩国产精品自在自线| 亚洲一级理论片| 秘密基地免费观看完整版中文| 国产乱码精品一品二品| 亚洲成在人线在线播放| 欧美国产禁国产网站cc| 91精品国产福利| 色一情一乱一乱一91av| 五月婷婷欧美激情| japanese在线观看| av在线播放不卡| 国产一区二区三区不卡在线观看| 亚洲福利一区二区三区|