上幾篇的內容我們學習了Python使用OpenCV處理圖像滑鼠及鍵盤事件的基礎方法使用Python OpenCV處理圖像之詳解使用OpenCV處理鍵盤滑鼠事件及圖像像素點內容的獲取和設置使用Python OpenCV處理圖像之使用OpenCV獲取並修改圖像的像素值。
今天,我們來了解下對於一幅圖像中感興趣的區域如何獲取。

首先,我們來打開一幅圖像。具體代碼如下,這裡就不做解釋了。
import cv2
img = cv2.imread('test.jpg')
對於一幅圖像來講,我們知道圖像的表示方式如下圖所示。詳細內容參見前篇博文。

當然,對於我們感興趣的區域就是由一定範圍內的許多個像素點來表示。那麼,問題來了,如何獲得這一區域內容?如何用更加便利的數據結構來表示這一塊區域?我們來看一下OpenCV中如何獲取這一塊區域的內容。其實,原理很簡單,就是利用數組切片和索引操作來選擇指定區域的內容。我們來看打開的這幅圖像的內容。

如果我們對圖片中的小船比較感興趣,我們覺得這個小船有點孤單,想在小船的旁邊在放一隻同樣大小的小船,我們該如何操作呢?
首先,我們選取感興趣區域的像素範圍,如下圖所示。

然後我們把它裁剪出來,具體代碼如下圖所示。
img2 = img[357:375, 415:447] # 從ps中獲取的內容要橫縱坐標轉換一下,最終獲取到區域像素範圍。
獲取到這些內容了我們把它放到圖片中的指定位置,注意,位置區域大小要和感興趣的圖片區域大小相同,具體打碼如下所示。
img[357:375, 445:477] = img2 #直接將img2區域的像素點內容賦值給img中的區域內即可
我們來看下設置效果,如下圖所示。

怎麼樣?是不是很酷,一隻孤單的小船旁邊又添加了一隻。

好了,今天就到這裡了,我們主要學習了感興趣區域ROI的選取過程,並通過一個例子講解了具體的操作步驟,感興趣的朋友們自己馬上試一試吧。從文中我們看到,對於感興趣區域的選取,我們只能選擇矩形區域內容。而且,當該區域粘貼到指定位置時,和背景圖片融合不是很好。有沒有好的辦法呢?我們下文中會有涉及,歡迎大家留言討論。
轉載請註明出處,百家號:Python高手養成。