Python圖像處理:使用cv2.selectroi選擇感興趣的圖像區域

一、介紹

在圖像處理中,有時我們需要對圖像的局部區域進行特殊處理,例如目標檢測、圖像分割等。這就需要我們能夠快速、準確地選擇感興趣的圖像區域。本文介紹如何利用OpenCV中的cv2.selectroi函數實現對圖像區域的選擇。

二、使用cv2.selectroi選擇ROI

cv2.selectroi是OpenCV中的一個函數,該函數提供了一個互動式界面,允許用戶用滑鼠選擇圖像中的矩形ROI(感興趣區域)。該函數的語法如下:

rect = cv2.selectROI(windowName, img[, showCrosshair[, fromCenter]])

其中,windowName表示顯示選擇框的窗口名稱,img為要選擇ROI的圖像。showCrosshair和fromCenter是兩個可選參數,分別表示是否顯示十字線和選擇是否從中心開始。

執行該函數後,會在圖像上出現一個矩形框,可以通過滑鼠拖拽調整框的大小和位置,最後選定ROI後按下Enter鍵即可。函數會返回表示ROI的矩形坐標,格式為(x, y, w, h),其中(x, y)為左上角坐標,w和h分別為寬和高。

三、示例代碼

以下是一個簡單的示例,演示如何使用cv2.selectroi選擇圖像區域:

import cv2

# 讀取圖像
img = cv2.imread('test.jpg')

# 顯示圖像
cv2.imshow('image', img)

# 選擇ROI
rect = cv2.selectROI('image', img)

# 列印ROI坐標
print(rect)

# 提取ROI
roi = img[rect[1]:rect[1]+rect[3], rect[0]:rect[0]+rect[2]]

# 顯示ROI
cv2.imshow('ROI', roi)

# 等待按鍵退出
cv2.waitKey(0)
cv2.destroyAllWindows()

這個示例讀取了一幅圖像,顯示在窗口中,然後調用cv2.selectroi函數,選擇ROI後列印出ROI的坐標,並通過Python的切片操作提取了ROI並顯示出來。

四、注意事項

使用cv2.selectroi需要注意以下幾點:

  1. 選擇ROI前要首先顯示圖像。
  2. 選擇框的位置可以通過拖拽調整,但大小只能通過鍵盤輸入來修改。
  3. 選擇完成後,按下Enter鍵退出,或按下任何其它鍵取消操作。

五、總結

本文介紹了如何使用cv2.selectroi選擇圖像中的ROI。此外,還提供了一個示例代碼,演示了如何讀取圖像、調用cv2.selectroi、提取ROI並顯示出來。通過閱讀本文,您可以快速掌握如何選擇感興趣的圖像區域,為後續的圖像處理操作打下基礎。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/308386.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-03 14:49
下一篇 2025-01-03 14:49

相關推薦

  • 如何在Java中拼接OBJ格式的文件並生成完整的圖像

    OBJ格式是一種用於表示3D對象的標準格式,通常由一組頂點、面和紋理映射坐標組成。在本文中,我們將討論如何將多個OBJ文件拼接在一起,生成一個完整的3D模型。 一、讀取OBJ文件 …

    編程 2025-04-29
  • 如何實現圖像粘貼到蒙版

    本文將從多個方面介紹圖像粘貼到蒙版的實現方法。 一、創建蒙版 首先,在HTML中創建一個蒙版元素,用於接收要粘貼的圖片。 <div id=”mask” style=”widt…

    編程 2025-04-29
  • Python圖像黑白反轉用法介紹

    本文將從多個方面詳細闡述Python圖像黑白反轉的方法和技巧。 一、Pillow模塊介紹 Pillow是Python的一個圖像處理模塊,可以進行圖片的裁剪、旋轉、縮放等操作。使用P…

    編程 2025-04-28
  • 使用boofcv進行圖像處理和機器視覺

    本文將詳細介紹使用boofcv進行圖像處理和機器視覺的方法和實踐。首先,我們將介紹boofcv的概述和安裝方法,然後分別介紹它的圖像處理、相機校準和機器學習功能。 一、概述和安裝 …

    編程 2025-04-28
  • Matlab二值圖像全面解析

    本文將全面介紹Matlab二值圖像的相關知識,包括二值圖像的基本原理、如何對二值圖像進行處理、如何從二值圖像中提取信息等等。通過本文的學習,你將能夠掌握Matlab二值圖像的基本操…

    編程 2025-04-28
  • Python實現圖像轉化為灰度圖像

    本文將從多個方面詳細闡述如何使用Python將圖像轉化為灰度圖像,包括圖像的概念、灰度圖像的概念、Python庫的使用以及完整的Python代碼實現。 一、圖像與灰度圖像 圖像是指…

    編程 2025-04-28
  • Android如何點擊其他區域收起軟鍵盤

    在Android應用中,當輸入框獲取焦點彈出軟鍵盤後,我們希望能夠點擊其他區域使軟鍵盤消失,以提升用戶體驗。本篇文章將說明如何實現這一功能。 一、獲取焦點並顯示軟鍵盤 在Andro…

    編程 2025-04-28
  • 圖像與信號處理期刊級別

    本文將從多個方面介紹圖像與信號處理期刊級別的相關知識,包括圖像壓縮、人臉識別、關鍵點匹配等等。 一、圖像壓縮 圖像在傳輸和存儲中佔據了大量的空間,因此圖像壓縮成為了很重要的技術。常…

    編程 2025-04-28
  • Python 文件內圖像重命名

    Python作為一門功能強大的編程語言,可以實現很多實用的操作。在基本編程操作中,經常會遇到需要對文件進行操作,而文件中的圖像也需要進行重命名。本文將從多個方面詳細介紹如何使用Py…

    編程 2025-04-27
  • Matlab局部放大——圖像處理的神器

    一、什麼是Matlab局部放大? Matlab是一個高級技術計算語言和互動式環境,常被用來進行科學計算和工程設計等領域的計算和可視化操作。局部放大指對一張圖像或視頻中感興趣的區域進…

    編程 2025-04-25

發表回復

登錄後才能評論