使用Python OpenCV處理圖像之圖像感興趣的區域(ROI)獲取

2020-12-08 python高手養成

上幾篇的內容我們學習了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高手養成。

相關焦點

  • opencv-python獲取圖像:面向對象與面向過程
    獲取圖像的方式有:1,讀取本地圖片,2,調用筆記本自帶攝像頭或usb攝像頭,3,調用網絡攝像頭。讀取圖片學過數字圖像處理的小夥伴應該很熟悉,在數字圖像處理課上,這是一張標準的測試圖片。Lena圖像在科研領域流行的原因:1.該圖適度的混合了細節、平滑區域、陰影和紋理,從而能很好的測試各種圖像處理算法。2.Lenna是個美女,對於圖像處理界的研究者(大部分都是男性)來說,美女圖可以有效地吸引他們來做研究。
  • 「python opencv視覺零基礎」十四、直方圖反向投影
    前文提醒:博主正在參加博客之星評比,成功入選Top200,現在暫居第九歡迎各位點擊了解更多幫我投票,非常感謝~目錄「python opencv 計算機視覺零基礎實戰」 第一節「python opencv視覺入門到實戰」二、格式與攝像頭「python opencv 視覺入門到實戰」 三、圖像編輯「python
  • 使用Python OpenCV處理圖像之使用OpenCV獲取並修改圖像的像素值
    使用Python OpenCV處理圖像之圖像文件的打開、顯示和保存操作,我們還使用OpenCV更改了微信頭像使用Python OpenCV處理圖像之詳解使用OpenCV處理鍵盤滑鼠事件。我們知道,今天來講,一幅圖片的像素值是很高的,動輒幾百萬的像素值,通常我們需要修改某一範圍內的像素值,但是,獲取這一範圍的像素值我們使用Python中的列表這一數據結構,並使用for循環語句查找某一像素範圍內的數據是非常低效的。因此,OpenCV提供的一幅圖像的表示方法是以類似numpy中數組的結構。這種數據結構的優點是高效、精準。
  • 「python opencv視覺零到實戰」八、圖片選區操作
    一、學習目標了解什麼是ROI了解floodFill的使用方法如有錯誤歡迎指出~目錄「python opencv 計算機視覺零基礎實戰」 第一節「python opencv視覺入門到實戰」二、格式與攝像頭「python opencv 視覺入門到實戰」 三、圖像編輯「python opencv視覺入門到實戰
  • 基於opencv 的圖像處理入門教程
    前言雖然計算機視覺領域目前基本是以深度學習算法為主,但實際上很多時候對圖片的很多處理方法,並不需要採用深度學習的網絡模型,採用目前成熟的圖像處理庫即可實現,比如 OpenCV 和 PIL ,對圖片進行簡單的調整大小、裁剪、旋轉,或者是對圖片的模糊操作。
  • opencv-python圖像預處理-濾波
    為了消除外界環境對圖像採集的幹擾,增強圖像的邊緣及灰度跳變的部分,使圖像變得清晰以及提高圖像處理速度需要對圖像進行預處理操作,主要是對圖像進行濾波和增強操作。使用的方法可以分為空間域處理和頻率域處理兩類。空間域指圖像平面本身,這類圖像處理方法用各種模板直接與圖像進行卷積運算,實現對圖像的處理。
  • 【數字圖像處理系列五】圖像濾波之空間濾波:圖像平滑降噪和圖像銳化
    python版本:python3.5.4 ; opencv-python版本:opencv-python3.4.2.17
  • 使用OpenCV和Python構建自己的車輛檢測模型
    utm_source=blog&utm_medium=vehicle-detection-opencv-python)目錄視頻中運動目標檢測的思想視頻中目標檢測的真實世界用例視頻目標檢測的基本概念 幀差分 圖像閾值 檢測輪廓 圖像膨脹利用OpenCV構建車輛檢測系統視頻中運動目標檢測的思想目標檢測是計算機視覺中一個引人入勝的領域。
  • 使用Python+OpenCV進行圖像處理(二)
    整個視覺入門系列內容如下:理解顏色模型與在圖像上繪製圖形(圖像處理基本操作)。基本的圖像處理與濾波技術。從特徵檢測到人臉檢測。圖像分割與分水嶺(Watershed)算法(TBU)在邊緣和輪廓檢測中,噪聲對檢測的精度有很大的影響。
  • ImagePy——UI界面支持開放插件的Python開源圖像處理框架
    python 開源圖像處理框架,其 UI 界面支持開放插件。在 github:https://github.com/Image-Py/imagepy 上,不僅有關於這款圖像處理軟體的詳細介紹,還有一些使用示例,雷鋒網 AI 科技評論接下來將詳細介紹這一開源圖像處理框架。
  • 使用一行Python代碼從圖像讀取文本
    處理圖像不是一項簡單的任務。對你來說,作為一個人,很容易看著某樣東西然後馬上知道你在看什麼。但電腦不是這樣工作的。對你來說太難的任務,比如複雜的算術,或者一般意義上的數學,是計算機毫不費力就能完成的。但在這裡,情況正好相反——對你來說很瑣碎的任務,比如識別圖像中的貓或狗,對電腦來說真的很難。
  • Python中如何利用Opencv打開視頻或圖像並用PyQt控制項顯示
    OpenCV是一個基於BSD許可(開源)發行的跨平臺計算機視覺庫,可以運行在Linux、Windows、Android和Mac OS作業系統上,使用起來十分方便,把它與PyQt結合起來,就可以順利的操作視頻、圖像了。具體安裝請自行百度,這裡介紹使用方法。
  • 使用Python調整圖像大小
    可以說,每一個「使用計算機的人」都需要在某個時間點調整圖像的大小。MacOS的預覽版可以做到,WindowsPowerToys也可以。本文使用Python來調整圖像大小,幸運的是,圖像處理和命令行工具是Python的兩個特長。
  • 使用Python OpenCV處理圖像之詳解直線、圓、矩形及文字的繪製
    我們知道,OpenCV作為一款強大的圖像處理庫,它能對圖像進行一些類似PS上面的處理,如果你足夠精通它,你可能會發掘比PS處理圖像更加豐富的功能……但是,作為Python新手,你不可能跳過一些基礎內容的學習過程。
  • 「python opencv視覺零基礎」十、圖片效果毛玻璃
    一、學習目標了解高斯模糊的使用方法了解毛玻璃的圖片效果添加了解如何自己做一個噪聲圖片目錄「python opencv 計算機視覺零基礎實戰」 第一節「python opencv視覺入門到實戰」二、格式與攝像頭「python opencv 視覺入門到實戰」 三、圖像編輯「python opencv視覺入門到實戰
  • 「python opencv計算機視覺零基礎到實戰」九模糊
    一、學習目標了解什麼是卷積了解模糊的使用方法與應用目錄「python opencv 計算機視覺零基礎實戰」 第一節「python opencv視覺入門到實戰」二、格式與攝像頭「python opencv 視覺入門到實戰」 三、圖像編輯「python opencv視覺入門到實戰」 第四節色彩空間
  • Python OpenCV使用攝像頭捕獲視頻
    我們知道,OpenCV是一款強大的跨平臺的計算機視覺庫,使用它能完成我們對於圖像和視頻處理的很多功能,今天,我們使用OpenCV來捕獲計算機攝像頭的視頻。第一個值一般為ret,它是一個布爾值,表示是否獲取到了圖像數據,如果獲取成功返回True,獲取失敗返回False,這一句後可以判斷ret是否為True,如果為True則向下執行,False則執行相應的操作,這樣可以使得我們的應用程式更加健壯。它還有一個功能就是驗證獲取到的視頻是否到達結尾部分。
  • 使用Python OpenCV處理圖像之如何拆分及合併一幅圖像的RGB通道
    我們知道,使用OpenCV在獲取一幅BGR圖像的信息時(shape屬性),會同時獲得一幅圖像的RGB圖層數。那麼,問題來了,如何將這些圖像拆分和合併呢?本篇文章作為另一篇博文使用Python中OpenCV庫創建一幅圖片的RGB通道圖片的補充。這篇博文中我們使用了數組切片及索引實現了分離BGR通道的功能。
  • 「python opencv視覺零基礎實戰」七邏輯運算應用
    一、學習目標了解opencv中圖像的邏輯運算了解opencv中邏輯運算的應用如有錯誤歡迎指出~目錄「python opencv 計算機視覺零基礎實戰」 第一節「python opencv視覺入門到實戰」二、格式與攝像頭「python opencv 視覺入門到實戰」 三、圖像編輯「python
  • python圖像處理-gif動圖
    比如你所以把一些尺寸不同的圖片合成動圖時,需要先將所有圖片統一尺寸,需要使用resize方法;或者你想在動圖上加上文字,可以結合之前處理單張圖片添加文字的方法,處理完之後在統一合成;或者你還想調整動圖的速率等等,具體更多內容可以留言問我。