博客專欄

        EEPW首頁 > 博客 > 基于 OpenCV 的圖像融合

        基于 OpenCV 的圖像融合

        發(fā)布人:AI科技大本營 時(shí)間:2022-05-15 來源:工程師 發(fā)布文章

        以下文章來源于小白學(xué)視覺 ,作者小白

        作者 | 小白

        來源丨小白學(xué)視覺圖片本期我們將一起學(xué)習(xí)如何使用OpenCV的進(jìn)行圖像拼接。01. 目錄

        • python
        • 入門
        • 步驟1 —圖像導(dǎo)入
        • 步驟2-調(diào)整圖像大小
        • 步驟3-融合圖像
        • 步驟4-導(dǎo)出結(jié)果

        02. PythonPython是一種通用的編程語言,在分析數(shù)據(jù)方面非常流行,它還可以讓幫助我們快速工作并更有效地集成系統(tǒng)。03. 入門對于該項(xiàng)目,我們將僅使用OpenCV庫。在處理計(jì)算機(jī)視覺項(xiàng)目時(shí),OpenCV是必備軟件包。OpenCV(開源計(jì)算機(jī)視覺庫)是一個(gè)開源計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)軟件庫OpenCV的構(gòu)建旨在為計(jì)算機(jī)視覺應(yīng)用程序提供通用的基礎(chǔ)結(jié)構(gòu),并加速在商業(yè)產(chǎn)品中使用機(jī)器感知。作為BSD許可的產(chǎn)品,OpenCV使企業(yè)可以輕松地使用和修改代碼。我們需要安裝此庫,以便可以在程序中使用它。為了使OpenCV正常工作,我們也必須安裝numpy庫。我們可以使用pip python庫管理器將它們安裝在一行中:


        pip install numpy opencv-python
        安裝完成后,讓我們將它們導(dǎo)入我們的代碼編輯器。對于這個(gè)項(xiàng)目,我們將使用Jupyter NotebookOpenCV導(dǎo)入為cv2,如下所示:

        import cv2

        現(xiàn)在,我們開始進(jìn)行兩幅圖像的融合吧。下一步將詳細(xì)介紹此過程。

        04. 步驟1 —圖像導(dǎo)入我們可以嘗試多種不同圖像組合。比如可以將兩張不同的圖片或文本圖像與圖像組合在一起,或?qū)⒉噬尘芭c圖像組合在一起。我將把文本圖像與漂亮的背景圖像混合在一起。讓我們先來看看這兩個(gè)圖像:圖片圖片好吧,現(xiàn)在讓我們將它們導(dǎo)入我們的程序中。我創(chuàng)建了一個(gè)文件夾,并將其重命名為images。它與Jupyter筆記本文件位于同一文件夾中。


        bg = cv2.imread('images/background.jpg', cv2.IMREAD_COLOR) fg = cv2.imread('images/foreground.png', cv2.IMREAD_COLOR)
        05. 第2步-調(diào)整圖像大小在此步驟中,我們將調(diào)整要混合的圖像的大小。此步驟也可以稱為預(yù)處理圖像。我們先調(diào)整圖像大小,以確保它們的尺寸相同。要使融合能夠正常進(jìn)行,需要使用相同的大小圖像。否則,它將返回錯(cuò)誤消息。在調(diào)整大小之前,讓我向您展示它們的原始大小:圖片如您所見,背景圖像為853到1280像素。前景圖像為1440至2560像素。我們將使用OpenCV的調(diào)整大小功能調(diào)整它們的大小。



        dim = (1200, 800) resized_bg = cv2.resize(bg, dim, interpolation = cv2.INTER_AREA) resized_fg = cv2.resize(fg, dim, interpolation = cv2.INTER_AREA)
        圖片現(xiàn)在,我們的圖像尺寸相同。我們可以進(jìn)行下一步,開始融合過程。06. 步驟3 —混合圖像有了OpenCV,我們可以用一行代碼來完成這項(xiàng)工作。將為我們完成混合的功能稱為addWeighted。它有5個(gè)參數(shù),可以列出為:圖像源1,src1權(quán)重,圖像源2,src2權(quán)重,伽瑪。每個(gè)圖像的權(quán)重值必須小于1。這是混合方程式:blend = (image scr1)*(src1 weight) + (image scr2)*(src2 weight) + gamma這是函數(shù)的數(shù)學(xué)原理。讓我們看看實(shí)際情況:

        blend = cv2.addWeighted(resized_bg, 0.5, resized_fg, 0.8, 0.0)
        我們給前景加了一些權(quán)重。這樣,背景將更暗,文本將更亮。到目前為止一切順利,混合完成。現(xiàn)在,我們導(dǎo)出我們的最終作品。07. 最后一步-導(dǎo)出結(jié)果現(xiàn)在,讓我們使用imwrite方法導(dǎo)出最終作品。這是將圖像另存為文件夾中的新圖像文件的行。

        cv2.imwrite('blended.png', blend)
        圖片該程序最后完成了兩個(gè)不同圖像的融合。現(xiàn)在,大家應(yīng)該已經(jīng)對在實(shí)際項(xiàng)目中如何使用OpenCV(開源計(jì)算機(jī)視覺)庫有了一些了解。



        *博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。



        關(guān)鍵詞: AI

        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 云和县| 尚义县| 广灵县| 南丰县| 营山县| 东阿县| 高邮市| 登封市| 佛学| 兴和县| 江阴市| 永胜县| 清徐县| 石门县| 南部县| 那曲县| 彰化市| 北辰区| 晋城| 贵南县| 肇庆市| 九台市| 长白| 普定县| 新民市| 镇宁| 灵台县| 沽源县| 通渭县| 呼玛县| 呈贡县| 多伦县| 衡南县| 花莲县| 阿拉善盟| 徐水县| 五大连池市| 彭山县| 佛坪县| 聂拉木县| 大兴区|