国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

python打造光斑處理系統(tǒng)8:點(diǎn)擊交互裁切

這篇具有很好參考價(jià)值的文章主要介紹了python打造光斑處理系統(tǒng)8:點(diǎn)擊交互裁切。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

光斑處理:python處理高斯光束的圖像
光斑處理系統(tǒng):

  • 程序框架??打開圖像??參數(shù)對話框/偽彩映射??裁切ROI
  • 光強(qiáng)分布??高斯擬合??沿割線的灰度分布

動作注冊

此前在圖像裁切時(shí),希望有一種點(diǎn)擊模式,可以將鼠標(biāo)點(diǎn)擊的兩個(gè)點(diǎn)框選起來。后來,在光斑分布時(shí),也希望點(diǎn)擊兩個(gè)點(diǎn),然后將兩點(diǎn)連線所在區(qū)域的強(qiáng)度繪制出來。為了實(shí)現(xiàn)這個(gè)功能,需要實(shí)現(xiàn)點(diǎn)擊交互。

在matplotlib的tkinter畫布中,提供了mpl_connect可以注冊鼠標(biāo)動作,所以可在AnaFacula的初始化代碼中,插入此函數(shù)

        # 前面是self.canvas.get_tk_widget().pack(...
        self.canvas.mpl_connect('button_press_event',
                                self.on_button_event)

        # 后面是self.toolbar = NavigationToolbar2Tk(...

鼠標(biāo)響應(yīng)函數(shù)

考慮到這種交互并非實(shí)時(shí)需要的,只有在進(jìn)入click模式,其返回的數(shù)值才有意義,所以需要一個(gè)全局變量來標(biāo)識點(diǎn)擊是否有效。另一方面,這些返回的數(shù)值需要進(jìn)行存儲,為此需要新建一個(gè)全局變量。

故而先在init_param函數(shù)中添加兩個(gè)全局變量。

        self.xyLst = []
        self.btnFlag = 'void'

并且,btnFlag至少有三種模式,void表示什么也不做,當(dāng)處于裁切點(diǎn)擊時(shí),為’cut’;當(dāng)處于分布點(diǎn)擊時(shí),狀態(tài)是’dist’。

然后設(shè)計(jì)點(diǎn)擊函數(shù)的功能,點(diǎn)擊兩次圖像時(shí),激活相關(guān)的功能,若模式為"cut",則進(jìn)行切割,若模式為"dist",則調(diào)用線段繪制函數(shù)。調(diào)用之后,釋放保存的點(diǎn),并將btnFlag重置為"void"。

    def on_button_event(self,evt):
        if self.btnFlag == "void":
            return
        self.xyLst.append([evt.xdata,evt.ydata])
        if len(self.xyLst) <2 :
            return
        arr = np.sort(self.xyLst,0).astype(int)
        if self.btnFlag == "cut":
            self.cutPara['xStart'],  self.cutPara['yStart'] = arr[0]
            self.cutPara['xEnd'], self.cutPara['yEnd']      = arr[1]
            self.imgCut()
        elif self.btnFlag == "dist":
            self.drawLine(self.xyLst[0], self.xyLst[1])
        self.btnFlag = "void"
        self.xyLst = []

然后,回到img_cut函數(shù),為click模式添加功能

        elif cutPara['mode'] == 'click':
            self.btnFlag = "cut"
            return

img_distri函數(shù)亦然

        elif distriPara['mode'] == "click":
            self.btnFlag = "dist"
            return

測試其裁切功能,效果如下

python打造光斑處理系統(tǒng)8:點(diǎn)擊交互裁切,本科生實(shí)驗(yàn),python,交互,鼠標(biāo)點(diǎn)擊交互,matplotlib,tkinter

線段繪制

在交互函數(shù)中,引用了drawLine,用于繪制光斑圖像中任意兩點(diǎn)連線中的灰度值分布,下面就來實(shí)現(xiàn)這個(gè)函數(shù)。首先,模仿割線均分的函數(shù),做一個(gè)已知起止點(diǎn)而計(jì)算線上灰度值的函數(shù),代碼如下,由于和disByOneDeg邏輯相似,故不再贅述。

def distByStartEnd(img,start,end):
    r = np.arange(np.sqrt(np.sum((np.array(start)-end)**2)))
    x = np.linspace(start[0],end[0],len(r))
    y = np.linspace(start[1],end[1],len(r))
    xL,yD = np.floor([x,y]).astype(int)
    xR,yU = xL+1,yD+1

    xDL,xDR = 1-(x-xL),1-(xR-x)
    yDD,yDU = 1-(y-yD),1-(yU-y)

    px = img[yU,xL]*xDL*yDU+img[yU,xR]*xDR*yDU+\
         img[yD,xL]*xDL*yDD+img[yD,xR]*xDR*yDD

    return [r,px]

最后,線段繪制函數(shù)如下

    def drawLine(self, st, ed):
        r, px = distByStartEnd(self.img, st, ed)

        self.fig.clf()
        ax = self.fig.add_subplot(121)
        ax.imshow(self.img)
        ax.plot([st[0],ed[0]], [st[1], ed[1]], lw=1, color='r')

        ax = self.fig.add_subplot(122)
        ax.plot(r, px)
        self.fig.tight_layout()
        self.canvas.draw()

運(yùn)行結(jié)果如下,這個(gè)函數(shù)在一個(gè)圖窗中繪制了兩個(gè)子圖,左圖展現(xiàn)了剛剛點(diǎn)擊的兩點(diǎn)在圖像上的連線,右側(cè)表示這條紅線上的灰度值。

python打造光斑處理系統(tǒng)8:點(diǎn)擊交互裁切,本科生實(shí)驗(yàn),python,交互,鼠標(biāo)點(diǎn)擊交互,matplotlib,tkinter文章來源地址http://www.zghlxwxcb.cn/news/detail-837050.html

到了這里,關(guān)于python打造光斑處理系統(tǒng)8:點(diǎn)擊交互裁切的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 二維碼智慧門牌管理系統(tǒng)升級,打造高效事件處理流程

    二維碼智慧門牌管理系統(tǒng)升級,打造高效事件處理流程

    隨著城市化的不斷推進(jìn),城市管理面臨越來越多的挑戰(zhàn)。為了更好地解決這些問題,許多城市已經(jīng)開始采用二維碼智慧門牌管理系統(tǒng)。這個(gè)系統(tǒng)不僅可以提高城市管理的效率,還可以讓市民更加方便快捷地了解城市的相關(guān)信息。然而,隨著城市管理需求的不斷增加,這個(gè)系統(tǒng)

    2024年02月07日
    瀏覽(19)
  • 解密Spring MVC異常處理:從局部到全局,打造穩(wěn)固系統(tǒng)的關(guān)鍵步驟

    解密Spring MVC異常處理:從局部到全局,打造穩(wěn)固系統(tǒng)的關(guān)鍵步驟

    ??前言 在現(xiàn)代軟件開發(fā)中,異常處理是不可或缺的一部分,它能夠有效地提高系統(tǒng)的穩(wěn)定性和健壯性。在Spring MVC框架中,異常處理機(jī)制起著至關(guān)重要的作用,它允許開發(fā)者在程序運(yùn)行過程中捕獲、處理和報(bào)告異常,從而保障用戶體驗(yàn)和系統(tǒng)可靠性。本文將帶您深入探索Spr

    2024年02月10日
    瀏覽(18)
  • Flutter中系統(tǒng)Emoji通過substring裁切后無法識別導(dǎo)致渲染錯(cuò)誤

    Flutter中系統(tǒng)Emoji通過substring裁切后無法識別導(dǎo)致渲染錯(cuò)誤

    在發(fā)布文章的時(shí)候,有標(biāo)題和內(nèi)容,標(biāo)題可為空,在沒有標(biāo)題的情況下,截取部分內(nèi)容當(dāng)作標(biāo)題。 內(nèi)容列表顯示的時(shí)候,某些特殊的情況下(并不重要),我們就需要裁切文章標(biāo)題。 當(dāng)文章標(biāo)題中有文字 + 系統(tǒng)自帶的 emoji 的時(shí)候,我們?nèi)ゲ们袠?biāo)題就會出現(xiàn)無法識別渲染出來

    2024年02月09日
    瀏覽(19)
  • 用 Python 打造 AIGC 的「操作系統(tǒng)」

    carefree0910/carefree-drawboard: ?? Infinite Drawboard in Python (github.com) https://github.com/carefree0910/carefree-drawboard 最近,AIGC 可謂是大火而特火,然而現(xiàn)在大家一般都在用 Gradio / Streamlit 寫 demo,一方面無法作為企業(yè)級產(chǎn)品去服務(wù)客戶,另一方面也感覺比較東一塊西一塊,很難形成“合力”

    2024年02月09日
    瀏覽(17)
  • python opencv+tkinter 使用tkinter實(shí)現(xiàn)交互式圖像處理工具

    python opencv+tkinter 使用tkinter實(shí)現(xiàn)交互式圖像處理工具

    tkinter 基本控件與使用 我們將學(xué)習(xí)如何使用Tkinter包編寫一些圖形用戶界面程序。Tkinter是Python的一個(gè)標(biāo)準(zhǔn)包,因此我們并不需要安裝它。我們將從創(chuàng)建一個(gè)窗口開始,然后我們在其之上加入一些小組件,比如按鈕,復(fù)選框等,并使用它們的一些屬性。話不多說,讓我們開始吧

    2024年02月10日
    瀏覽(33)
  • C語言與硬件交互:中斷處理、低級I/O操作與系統(tǒng)調(diào)用(一)

    目錄 一、引言 二、中斷處理 定義與作用 C語言中的中斷處理機(jī)制 實(shí)例分析 中斷處理注意事項(xiàng) C語言,作為一種兼具底層控制力與較高抽象層次的編程語言,憑借其簡潔明了的語法、高效的執(zhí)行效率以及與硬件資源的緊密聯(lián)系,在嵌入式系統(tǒng)、操作系統(tǒng)開發(fā)、實(shí)時(shí)控制、設(shè)備

    2024年04月14日
    瀏覽(15)
  • 【微信小程序】通過綁定點(diǎn)擊事件來實(shí)現(xiàn)點(diǎn)擊交互

    在微信小程序中,可以通過綁定點(diǎn)擊事件來實(shí)現(xiàn)點(diǎn)擊交互。以下是點(diǎn)擊事件的實(shí)現(xiàn)步驟: 在WXML文件中,找到需要綁定點(diǎn)擊事件的元素,例如按鈕、圖片等。 在該元素上添加 bindtap 屬性,并指定一個(gè)對應(yīng)的事件處理函數(shù),例如: 在對應(yīng)的頁面或組件的JS文件中,定義事件處理

    2024年02月14日
    瀏覽(99)
  • Python:打造智能家居控制系統(tǒng)(內(nèi)附完整源碼)

    Python:打造智能家居控制系統(tǒng)(內(nèi)附完整源碼) 隨著人工智能技術(shù)和互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,智能家居逐漸成為人們生活中不可或缺的一部分。本文將介紹如何使用Python編程語言來打造一個(gè)基于語音識別的智能家居控制系統(tǒng)。 首先,我們需要準(zhǔn)備一些硬件設(shè)備,包括樹莓派

    2024年02月11日
    瀏覽(21)
  • OpenCV-Python中的圖像處理-GrabCut算法交互式前景提取

    OpenCV-Python中的圖像處理-GrabCut算法交互式前景提取

    cv2.grabCut(img: Mat, mask: typing.Optional[Mat], rect, bgdModel, fgdModel, iterCount, mode=…) img:輸入圖像 mask:掩模圖像,用來確定那些區(qū)域是背景,前景,可能是前景/背景等。 可以設(shè)置為: cv2.GC_BGD,cv2.GC_FGD,cv2.GC_PR_BGD,cv2.GC_PR_FGD,或者直接輸入 0,1,2,3 也行。 rect :包含前景的矩形,格式為

    2024年02月12日
    瀏覽(20)
  • Python-OpenCV中的圖像處理-GrabCut算法交互式前景提取

    Python-OpenCV中的圖像處理-GrabCut算法交互式前景提取

    cv2.grabCut(img: Mat, mask: typing.Optional[Mat], rect, bgdModel, fgdModel, iterCount, mode=…) img:輸入圖像 mask:掩模圖像,用來確定那些區(qū)域是背景,前景,可能是前景/背景等。 可以設(shè)置為: cv2.GC_BGD,cv2.GC_FGD,cv2.GC_PR_BGD,cv2.GC_PR_FGD,或者直接輸入 0,1,2,3 也行。 rect :包含前景的矩形,格式為

    2024年02月13日
    瀏覽(104)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包