亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Python與OpenCV的實(shí)時(shí)圖像處理相機(jī)

        2021-07-08 09:46:42張幼作郭惠婷夏清
        數(shù)碼影像時(shí)代 2021年7期
        關(guān)鍵詞:檢測(cè)

        張幼作 郭惠婷 夏清

        編者按:該項(xiàng)目通過運(yùn)用Python開發(fā)語(yǔ)言在Pycharm平臺(tái)上,結(jié)合開源的OpenCv圖像處理函數(shù)庫(kù)、PySimpleGUI庫(kù),對(duì)攝像頭所實(shí)時(shí)拍攝的圖像畫面進(jìn)行采集處理。該項(xiàng)目可通過攝像頭實(shí)時(shí)動(dòng)態(tài)查看各類圖像處理的特點(diǎn)并保存圖像,其中利用高斯函數(shù)、濾波處理、閾值二值化和Canny邊緣提取算法等設(shè)置控件按鈕功能,為后續(xù)自制美顏相機(jī)提供了基礎(chǔ),也實(shí)現(xiàn)了使用時(shí)的方便快捷、簡(jiǎn)單易操作。

        引言

        在這個(gè)網(wǎng)絡(luò)交友盛行的時(shí)期,越來(lái)越多的人會(huì)互相交換自拍照片來(lái)相互認(rèn)識(shí),運(yùn)用各種美圖的手機(jī)軟件。為了解決修圖軟件來(lái)回切換的不方便性和降低像素的可能,我們打造了一個(gè)利用電腦自帶攝像頭,以Python為基礎(chǔ)的開發(fā)語(yǔ)言,結(jié)合OpenCv技術(shù)的實(shí)時(shí)動(dòng)態(tài)可查看各類圖像處理效果,并實(shí)現(xiàn)拍照功能且可保存圖片的程序相機(jī)。

        項(xiàng)目背景

        如今修圖軟件在日常的使用頻率日益增多,數(shù)量也是只增不減。使用時(shí)很多功能需要切換不同軟件,很多功能也用不到,不僅浪費(fèi)時(shí)間并且從一定程度上降低了照片的質(zhì)量。該項(xiàng)目就在是要讓使用者用最短時(shí)間拍出可直出的圖片,不需要來(lái)回切換軟件,只需設(shè)置自己平時(shí)常用的功能,大大提高了效率與照片像素。

        主要技術(shù)

        OpenCv

        OpenCV(Open Source Computer Vision Library)是一個(gè)開源的計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)軟件庫(kù),實(shí)現(xiàn)圖像處理和計(jì)算機(jī)視覺方面的很多通用算法。應(yīng)用領(lǐng)域廣泛,有人機(jī)互動(dòng)、物體識(shí)別、運(yùn)動(dòng)跟蹤、圖像分割、人臉識(shí)別、機(jī)器人等等。其使用方法也簡(jiǎn)單易懂,主要是運(yùn)用Opencv庫(kù)文件,達(dá)到捕捉圖像、圖像分割和人機(jī)交互的目的。

        設(shè)計(jì)GUI

        圖形用戶界面,一般稱之為GUI,是實(shí)現(xiàn)人機(jī)交互的窗口。是程序設(shè)計(jì)的重要組成部分。用戶使用圖形界面時(shí)可以非常方便、直觀地進(jìn)行操作處理。GUI的特點(diǎn)是:具有人機(jī)交互性、美觀性以及實(shí)用性。

        該項(xiàng)目使用的是Python圖形界庫(kù)(PySimpleGUI)。相較于Tkinter、wxPython和PyQt來(lái)說(shuō)PySimpleGUI創(chuàng)建GUI更加的容易,用幾行代碼就可以構(gòu)建自定義GUI布局,對(duì)于初學(xué)者來(lái)說(shuō)足夠容易,對(duì)于高級(jí)用戶來(lái)說(shuō)也足夠強(qiáng)大。

        GUI部分主要由攝像頭界面區(qū)域和控制按鈕區(qū)域兩部分組成,效果如圖1所示。該項(xiàng)目無(wú)外接硬件,攝像頭為內(nèi)置攝像頭。

        高斯濾波函數(shù)

        高斯濾波是一種線性平滑濾波,主要適用于消除高斯噪聲。實(shí)質(zhì)上也是一種信號(hào)的濾波器。簡(jiǎn)單來(lái)說(shuō)濾波器就是一個(gè)加了權(quán)限系數(shù)的窗口,當(dāng)使用濾波器去處理圖像時(shí),就把這個(gè)窗口放在圖像之上,透過這個(gè)窗口來(lái)看所得到的圖像,達(dá)到平滑的效果。

        具體操作是:用一個(gè)用戶指定的模板去掃描圖像中的每一個(gè)像素點(diǎn),用模板去確定鄰域內(nèi)像素的加權(quán)平均灰度值用來(lái)替代模板中心像素點(diǎn)的值,如圖2所示。

        該項(xiàng)目設(shè)置高斯濾波矩陣長(zhǎng)、寬都為21,標(biāo)準(zhǔn)差取values[‘blur_slider’],代碼如圖所示:

        if values['blur']:

        frame = cv2.GaussianBlur(frame, (21, 21),

        values['blur_slider'])

        閾值二值化函數(shù)

        閾值是指一種效應(yīng)能夠產(chǎn)生的最低值或最高值。閾值分很多種類,在該項(xiàng)目中運(yùn)用的是PS閾值。它是基于照片亮度的一個(gè)黑白分界值,默認(rèn)是50%中性灰,即128。亮度高于128會(huì)變白,低于128則變黑。

        二值化就是進(jìn)行圖像分割的最簡(jiǎn)單的技術(shù),可以把灰度圖像轉(zhuǎn)換為二值圖像。通過設(shè)定的一個(gè)閾值,把大于閾值的像素全設(shè)置為0或者255,小于閾值的像素全設(shè)置為了一個(gè)灰度,這樣就完成了對(duì)圖像的二值化處理。

        該項(xiàng)目使用的是固定閾值法,表示根據(jù)閾值類型設(shè)置好一個(gè)閾值,然后進(jìn)行二值化。代碼部分如圖所示:

        if values['thresh']:

        frame = cv2.cvtColor(frame, cv2.COLOR_BGR2LAB)[:, :, 0]

        frame = cv2.threshold(frame, values['thresh_slider'], 255, cv2.THRESH_BINARY)[1]

        調(diào)節(jié)對(duì)比度

        對(duì)比度指的是一幅圖像中明暗區(qū)域最亮的白和最暗的黑之間不同亮度層級(jí)的測(cè)量,差異范圍越大代表對(duì)比越大,相反也一樣,差異范圍越小代表對(duì)比越小。使用高對(duì)比度對(duì)圖像整體像素都有很大的幫助。

        本項(xiàng)目設(shè)定的范圍為0-255,控件默認(rèn)對(duì)比度為128中間值。其中OpenCv通過‘create CLAHE()’和‘a(chǎn)pply()’函數(shù)來(lái)實(shí)現(xiàn)。代碼如下:

        if values['enhance']:

        enh_val = values['enhance_slider'] / 40

        clahe = cv2.createCLAHE(clipLimit=enh_val, tileGridSize=(8, 8))

        lab = cv2.cvtColor(frame, cv2.COLOR_BGR2LAB)

        lab[:, :, 0] = clahe.apply(lab[:, :, 0])

        frame = cv2.cvtColor(lab, cv2.COLOR_LAB2BGR)

        Canny邊緣檢測(cè)技術(shù)

        邊緣檢測(cè)[3]是從圖像中提取有用結(jié)構(gòu)信息的一種技術(shù),提取圖片的邊緣信息是底層數(shù)字圖像處理的基本任務(wù)之一。

        本項(xiàng)目使用的是Canny邊緣檢測(cè)算法,這是一種多級(jí)邊緣檢測(cè)算法。檢測(cè)邊緣目的就在于當(dāng)我們需要計(jì)算機(jī)自動(dòng)提取底層或高層信息時(shí),邊緣可以說(shuō)是最直觀的一種信息了。有多種算法都可進(jìn)行邊緣檢測(cè),Canny算法雖然年代久遠(yuǎn),但很多邊緣檢測(cè)算法都是在此基礎(chǔ)上進(jìn)行改進(jìn)的。

        Canny邊緣檢測(cè)算法的五個(gè)實(shí)現(xiàn)步驟:

        1.在圖像中用高斯來(lái)平滑濾波,選用高斯濾波也是因?yàn)樵诒姸嘣肼暈V波器中,高斯去除噪聲的表現(xiàn)最好。

        2.計(jì)算梯度強(qiáng)度和方向。(opencv中有封裝好的函數(shù),可以求圖像中每個(gè)像素點(diǎn)的n階導(dǎo)數(shù))

        3.應(yīng)用非最大抑制技術(shù)來(lái)消除邊誤檢。這一步需要抑制那些梯度不夠大的像素點(diǎn),只保留最大的梯度,從而達(dá)到瘦邊的目的,從而得到一個(gè)更加精細(xì)的邊緣。

        4.應(yīng)用雙閾值篩選,即設(shè)置高閾值與低閾值。(這一步還是去除一部分梯度較小的點(diǎn),使得邊緣更加精細(xì)化)

        5.用滯后技術(shù)跟蹤邊界。技術(shù)原理為當(dāng)邊界像素點(diǎn)位置的幅度值超過高閾值,就保留該像素點(diǎn);當(dāng)某一像素點(diǎn)位置的幅度值低于低閾值的話,則剔除該位置的像素點(diǎn),如圖3所示。

        輪廓檢測(cè)算法技術(shù)

        輪廓檢測(cè)也是圖像處理中經(jīng)常用到的。該項(xiàng)目中,OpenCV-Python接口中使用cv2.findContours()函數(shù)來(lái)查找檢測(cè)物體的輪廓。

        總的來(lái)說(shuō),輪廓檢測(cè)是物體檢測(cè)和形狀分析識(shí)別的有用工具,連接所有連續(xù)點(diǎn)(沿著邊界)的曲線,具有相同的顏色或強(qiáng)度。呈現(xiàn)效果為紅線,原底。代碼如下:

        if values['contour']:

        hue = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

        hue = cv2.GaussianBlur(hue, (21, 21), 1)

        hue = cv2.inRange(hue, np.array([values['contour_slider'], values['base_slider'], 40]),

        np.array([values['contour_slider'] + 30, 255, 220]))

        cnts= cv2.findContours(hue, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[0]

        cv2.drawContours(frame, cnts, -1, (0, 0, 255), 2)

        總結(jié)與展望

        本文討論了在Pyhon語(yǔ)言基礎(chǔ)上,結(jié)合OpenCv庫(kù),制作一個(gè)無(wú)外借硬件的實(shí)時(shí)拍照相機(jī)。用戶只要有一定的Opencv知識(shí)基礎(chǔ)便可自行選擇自己喜歡的功能去修改自己的代碼相機(jī),方便快捷簡(jiǎn)約。

        雖然該項(xiàng)目在實(shí)時(shí)應(yīng)用中滿足了實(shí)時(shí)性處理的需求,但其中還有很多需要改進(jìn)的地方:

        1.沒有App界面和快捷方式。如果用戶想要打開軟件,必須打開編輯器啟動(dòng)相機(jī),不夠美觀。

        2.Canny算法年代久遠(yuǎn)經(jīng)典,但運(yùn)算代價(jià)相較于其他邊界算法要高,運(yùn)行在實(shí)時(shí)圖像處理部分有一定困難,更適合有高精度要求的應(yīng)用。

        參考文獻(xiàn):

        [1]李杰.基于圖像處理的實(shí)時(shí)虛擬化妝及推薦方法研究[D].大連海事大學(xué),2018.

        [2]張壯.基于HLS的智能相機(jī)圖像處理底層IP核設(shè)計(jì)與實(shí)現(xiàn)[D].南京郵電大學(xué),2019.

        [3]李曉磊.基于人類視覺感知的輪廓檢測(cè)方法[D].陜西師范大學(xué),2014.

        [4]王志強(qiáng).基于霍夫變換的圖像輪廓檢測(cè)方法與優(yōu)化[J].哈爾濱師范大學(xué)自然科學(xué)學(xué)報(bào),2021,37(03):79-82.

        本文受到深圳技師學(xué)院校級(jí)創(chuàng)客基金項(xiàng)目“現(xiàn)實(shí)虛擬-基于數(shù)字可視化+物聯(lián)網(wǎng)的虛擬空間”支持。

        作者簡(jiǎn)介:張幼作(2003—),廣東汕尾人,本科在讀,主要研究方向?yàn)橥ㄐ啪W(wǎng)絡(luò)應(yīng)用;郭惠婷(1991—),廣東梅州人,教師,碩士研究生在讀,主要研究方向?yàn)槲锫?lián)網(wǎng)技術(shù);夏清(1978—),教師,研究生,高級(jí)工程師,主要研究方向?yàn)槲锫?lián)網(wǎng)、人工智能,為本文的通訊作者。

        猜你喜歡
        檢測(cè)
        QC 檢測(cè)
        “不等式”檢測(cè)題
        “一元一次不等式”檢測(cè)題
        “一元一次不等式組”檢測(cè)題
        “幾何圖形”檢測(cè)題
        “角”檢測(cè)題
        “有理數(shù)的乘除法”檢測(cè)題
        “有理數(shù)”檢測(cè)題
        “角”檢測(cè)題
        “幾何圖形”檢測(cè)題
        亚洲一区二区在线| 波多野结衣绝顶大高潮| 久久99精品国产麻豆| 国产夫妇肉麻对白| 国产在线观看免费观看| 亚洲嫩草影院久久精品| 国产粉嫩美女一区二区三| 蜜桃视频第一区免费观看| 国产两女互慰高潮视频在线观看 | 天天躁日日躁狠狠久久| 免费在线亚洲视频| 亚洲国产精品一区亚洲国产| 亚洲精品成人无百码中文毛片 | 色窝窝免费播放视频在线| 国产粉嫩高清| 国产黄色一区二区在线看 | 精品国产一区二区三区a| 日本大乳高潮视频在线观看| 综合久久给合久久狠狠狠97色| 亚洲一级无码AV毛片久久 | 肥老熟妇伦子伦456视频| 国产肉丝袜在线观看| 天堂AV无码AV毛片毛| av天堂一区二区三区精品 | 丰满人妻被黑人猛烈进入| 无遮挡十八禁在线视频国产制服网站| 开心激情网,开心五月天| 国产精品国产三级国产a| 男人进去女人爽免费视频| 国产特级全黄一级毛片不卡| 高清亚洲精品一区二区三区 | 国模雨珍浓密毛大尺度150p| 亚洲一区欧美二区| 亚洲国产成人av第一二三区| 国产情侣一区二区| 久久人人妻人人做人人爽| 吃下面吃胸在线看无码| 久久热免费最新精品视频网站| 99久久久国产精品免费蜜臀| 日韩AV无码一区二区三| 日韩精品视频av在线观看|