如何在OpenCV中選擇邊界框(ROI)

2021-09-18 06:57:52 字數 2658 閱讀 9533

參考:

在本教程中,我們將學習如何在opencv中的影象中選擇邊界框或感興趣區域(roi)。 在過去,我們必須通過處理滑鼠事件來編寫我們自己的邊界框選擇器。 但是,現在我們可以選擇使用opencv原生部分的函式selectroi。

我對opencv庫中的奇怪選擇感到驚訝。 您可能會認為selectroi將成為具有顯示影象,繪圖等功能的highgui的一部分。但是,selectroi是跟蹤api的一部分! 正如你在後面會注意到的,寫selectroi時所做的選擇有點奇怪。 但是,在我們批評之前,我們得感謝有人製造出一些有用的東西,儘管它並不完美。

讓我們深入看看selectroi的用法

由於selectroi是跟蹤api的一部分,因此您需要使用opencv_contrib安裝opencv 3.0(或更高版本)。

我們從乙個示例**開始。 它允許您在影象中選擇乙個矩形,裁剪矩形區域並最終顯示裁剪後的影象。

我們將修改突出顯示的行以嘗試不同的選項。

如果你可以使用現有的視窗而不是roi選擇器的視窗,這不是很好嗎? 那麼你走了

bool fromcenter = false; 

rect2d r = selectroi("image", im, fromcenter);

fromcenter = false

r = cv2.selectroi("image", im, fromcenter)

bool showcrosshair = false; 

bool fromcenter = false;

rect2d r = selectroi("image", im, fromcenter, showcrosshair);

showcrosshair = false

fromcenter = false

r = cv2.selectroi("image", im, fromcenter, showcrosshair)

selectroi函式還允許您選擇多個感興趣的區域,但似乎有兩個錯誤。

bug警告1:根據說明,您可以拖動乙個矩形,然後按enter並拖動另乙個矩形。 但是,opencv 3.2中的實現似乎存在乙個錯誤。 您必須在第乙個矩形後兩次按enter鍵。 對於所有後續的矩形,您應該按enter一次。

// specify a vector of rectangles (roi) 

vector

rects;

bool fromcenter = false;

// the selected rectangles are in

selectroi("image", im, rects, fromcenter);

# note this code does not work. 

# specify a vector of rectangles (roi)

rects =

fromcenter = false

# select multiple rectangles

selectroi("image", im, rects, fromcenter)

參考:

廣州平面設計培訓 教你如何在網頁設計中選擇主色調

廣州傳智播客教你如何在網頁設計中選擇主色調 網頁設計選擇主色調是網頁設計培訓中的必修課。那麼如何將網頁的主色調調得更美觀呢?下面請聽我來說幾句 1.根據色彩分析中的色彩心理聯想 色彩表示意義 以及運用效果等等我們可以看出不同的色彩表達著不同的含義,所以在網頁設計中對於主色調的選擇一般情況下會基於色彩...

BASH 如何從選項列表中選擇

問題 如何提供給使用者選項列表,並且只有在必要的時候,使用者才需要進行選擇 解決方案 使用bash內建的select命令來建立選項列表,使用者通過對應的序號進行選擇。bin bash cookbook filename select dir directorylist finished ls ps3...

OpenCV輪廓 邊界框 最小矩形 最小閉圓檢測

import cv2 import numpy as np 函式cv2.pyrdown 是降低影象解析度,變為原來一半 將轉化為灰度,再進行二值化 ret,thresh cv2.threshold cv2.cvtcolor img.copy cv2.color bgr2gray 127,255,cv...