蒙太奇與OpenCV(P1)
今天的博客文章有四個(gè)主要部分。
在第一部分中,我們將學(xué)習(xí)如何從駐留在磁盤上的圖像數(shù)據(jù)集構(gòu)建圖像路徑列表。
從這里開始,我們將使用build_montages函數(shù)獲取這個(gè)圖像列表,并創(chuàng)建實(shí)際的蒙太奇。
接下來(lái),我們將在屏幕上顯示蒙太奇。
最后,我將提供一個(gè)使用蒙太奇在OpenCV中顯示圖像的示例。
要將源代碼+示例圖像下載到本文,請(qǐng)確保使用下面的“下載”部分。
使用OpenCV創(chuàng)建蒙太奇
首先,打開一個(gè)新文件,將其命名為montage_example.py,并插入以下代碼:
第3-7行導(dǎo)入我們所需的Python包。請(qǐng)注意如何從imutils包導(dǎo)入build_蒙太奇。
如果您的系統(tǒng)上沒有安裝IMUTIL(截至本文撰寫之時(shí)為v0.4.3),請(qǐng)確保通過(guò)pip安裝/升級(jí)它:
$pip安裝--升級(jí)imutils
注意:如果您使用的是Python虛擬環(huán)境(就像我的所有OpenCV安裝教程一樣),請(qǐng)確保先使用workon命令訪問(wèn)您的虛擬環(huán)境,然后安裝/升級(jí)imutils。
從這里,我們可以解析命令行參數(shù):
我們的腳本需要一個(gè)命令行參數(shù),后跟第二個(gè)可選參數(shù),每個(gè)參數(shù)的詳細(xì)信息如下:
--images:指向目錄的路徑,其中包含要用其構(gòu)建蒙太奇的圖像。
--samples:一個(gè)可選的命令行參數(shù),指定要采樣的圖像數(shù)(我們將該值默認(rèn)為21個(gè)圖像總數(shù))。
接下來(lái),我們可以使用--images路徑隨機(jī)選擇一些輸入圖像:
為了獲得--images目錄中所有圖像路徑的列表,我們調(diào)用list_images函數(shù)(第19行)。
出于本練習(xí)的目的,我們隨機(jī)洗牌第20行上的圖像路徑,然后采集這些圖像的樣本以顯示在屏幕上(第21行)。此采樣返回的圖像路徑集將用于構(gòu)建蒙太奇。
對(duì)于您自己的應(yīng)用程序,您可能不必費(fèi)心隨機(jī)洗牌和選擇一組圖像路徑——您已經(jīng)有了圖像路徑。
在Brian最初的問(wèn)題中,他希望顯示他的圖像搜索引擎的結(jié)果。
因此,結(jié)果包含他的圖像路徑。
同樣,請(qǐng)記住,我們只是演示如何使用OpenCV構(gòu)建蒙太奇——如何實(shí)際使用這個(gè)示例完全取決于您。
鑒于我們的ImagePath,我們已經(jīng)準(zhǔn)備好構(gòu)建蒙太奇:
在第24行,我們初始化圖像列表。
然后,我們?cè)诘?8-31行的ImagePath中循環(huán),從磁盤加載每個(gè)圖像,然后將圖像附加到圖像列表中。
為了實(shí)際構(gòu)建蒙太奇,我們?cè)诘?4行調(diào)用build_montages函數(shù)——這是完成所有繁重工作的地方。如果您對(duì)build_montages方法的內(nèi)部結(jié)構(gòu)以及幕后發(fā)生的事情感到好奇,請(qǐng)務(wù)必查看GitHub上的源代碼實(shí)現(xiàn)。
build_montages函數(shù)需要三個(gè)參數(shù):
圖像列表:該參數(shù)是通過(guò)OpenCV加載的圖像列表。在我們的例子中,我們提供了構(gòu)建在第28-31行上的圖像列表。
圖像形狀:一個(gè)元組,包含蒙太奇中每個(gè)圖像的寬度和高度。在這里,我們指出蒙太奇中的所有圖像都將調(diào)整為129 x 196。將蒙太奇中的每個(gè)圖像調(diào)整為固定大小是一項(xiàng)要求,這樣我們就可以在生成的NumPy數(shù)組中正確分配內(nèi)存。注意:蒙太奇中的空白將被黑色像素填充。
蒙太奇形狀:第二個(gè)元組,這個(gè)元組指定蒙太奇中的列數(shù)和行數(shù)。這里我們指出,我們的蒙太奇將有7列(7幅圖像寬)和3行(3幅圖像高)。
build_montages方法返回NumPy數(shù)組格式的蒙太奇圖像列表。
如果圖像列表中的圖像數(shù)量超過(guò)蒙太奇_形狀所能容納的數(shù)量,則會(huì)為額外的圖像創(chuàng)建一個(gè)新的蒙太奇。重復(fù)此過(guò)程,直到所有圖像都添加到蒙太奇。此過(guò)程與在多個(gè)頁(yè)面上顯示搜索結(jié)果相同。

以下為原文鏈接:
https://www.pyimagesearch.com/2017/05/29/montages-with-opencv/