opencv學習 興趣區選取

2021-06-21 14:46:56 字數 1821 閱讀 2062

在opencv中,普遍支援roi和widthstep,函式的操作被限制於感興趣的區域,要設定或者取消roi,就要使用cvsetimageroi()和cvresetimage()函式.如過想設定roi,可以使用函式cvsetimageroi(),並為其傳遞乙個影象指標和矩形.而取消roi,只需要為函式cvresetimageroi()傳遞乙個影象指標

void  cvsetimageroi( iplimage* image, cvrect rect );

void  cvresetimageroi( iplimage* image );

如例3.12,讀取一幅影象,並設定了想要的roi的x,y,width,和height的值,最後將roi區域都加上了乙個整數,本例程中,通過內聯的cvrrect()建構函式設定roi.通過cvresetimageroi()函式釋放roi是非常重要的,否則將忠實的顯示roi區域

[cpp]view plain

copy

//例3.12 用imageroi來增加某範圍的畫素

#include "stdafx.h"

#include 

#include 

int_tmain(

intargc, _tchar* argv)  

return

0;  

}  

通過巧妙地使用widthstep,我們可以打到同樣的效果.要做到這一點,我們建立了另乙個影象頭,讓他的width和height的值等於interest_rect的width和height的值.我們還需要按interest_rect 起點設定影象起點(左上角或者左下角),下一步,設定子影象的widthstep與較大的interest_img相同.這樣,即可在子影象中逐步步進到大影象裡子區域中下一行開始處的合適位置.最後設定子影象的imagedata指標指向興趣子區域的開始,如下例所示

[cpp]view plain

copy

iplimage *interest_img;  

cvrect interest_rect;  

iplimage* sub_img = cvcreateimageheader(cvsize(interest_rect.width,interest_rect.height),  

interest_img->depth,interest_img->nchannels);  

sub_img->origin = interest_img->origin;  

sub_img->widthstep = interest_img->widthstep;  

sub_img->imagedata = interest_img->imagedata +  

interest_rect.y * interest_img->widthstep +  

interest_rect.x * interest_img->nchannels;  

cvadds(sub_img,cvscalar(1),sub_img);  

cvreleaseimageheader(&sub_img);  

看起來設定和重置roi更方便一些,為什麼還要使用widthstep? 原因是有些時候在處理的過程中,想在操作過程中設定和保持一副影象的多個子區域處於活動狀態,但是roi只能序列處理並且必須不斷的設定和重置.

掩碼和模版, 在**示例中cvadds()函式允許第四個引數預設值為空:const cvarr* mask = null.這是乙個8位單通道陣列,它允許把操作限制到任意形狀的非0畫素和掩碼區,如果roi隨著掩碼或者模版變化,程序將會被限制在roi和掩碼的交集區域.掩碼或者模版只能在指定了其影象的函式中使用.

Opencv感興趣區處理

用roi來增加某範圍的畫素值 include include ch3 ex3 12 image name x y width height add int main iplimage src cvnamedwindow example3 12 pre cv window autosize cvnam...

opencv選取目標

好久沒發了,當初自己在 上做的筆記,現在想再用的時候,知識點沒記住,也找不到了。還是自己整理下比較靠譜,雖然都是最簡單的內容。opencv在上畫圓圈 cvcircle cvarr img,cvpoint center,int radius,cvscalar color,int thickness 1...

opencv學習之感興趣區域(ROI)

新手學習就是苦啊,好多東西都要一點點的摸索,之前的經驗太少,積累太少,許多問題太簡單了,問別人都不好開口,誰讓自己太low了啊!那就自己折騰唄 今天看了opencv的矩陣和影象操作部分內容,這裡把這折騰的過程弄上來了 書上給了兩種獲得感興趣矩形區域的方式 乙個是直接用函式 cvsetimageroi...