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

2021-06-27 06:55:24 字數 1659 閱讀 2345

新手學習就是苦啊,好多東西都要一點點的摸索,之前的經驗太少,積累太少,許多問題太簡單了,問別人都不好開口,誰讓自己太low了啊!

那就自己折騰唄……

今天看了opencv的矩陣和影象操作部分內容,這裡把這折騰的過程弄上來了

書上給了兩種獲得感興趣矩形區域的方式

乙個是直接用函式  cvsetimageroi(iplimage* image, cvrect  rect),    其中image是載入的一幅影象,  rect =  cvrect(x, y, width,  height) ,x,y給出了矩形在原影象中的起點(從左上起),width,height給出了矩形的寬和高。    書中示例給出了將該矩形區域的藍色通道增加150  ( 即語句cvadds(interestimg, cvscalar(add), interestimg))後的影象輸出。書中原始碼如下:

#include #include // ch3_ex3_12 image_name x y width height add# 

int main(int argc, char** argv)

cvreleaseimage( &src );

cvdestroywindow("example3_12_pre");

cvdestroywindow("example3_12_post");

return 0;

}

另乙個方法是通過使用widthstep來直接達到與上面相同的效果,這個相當於通過原圖的資訊來建立乙個需要的長寬的矩形iplimage型別,然後再根據期望的感興趣區域位置,找到矩形的左上角在原圖上的座標,這樣就成功劃出了感興趣矩形區域了

與此同時,根據後面的alpha融合的內容,試著將載入了另一幅影象,然後選取了該影象同樣大小的一部分,和原圖的感興趣區域按一定的權值融合了,於是使得操作區域出現了「你中有我,我中有你」的現象

#include #include // ch3_ex3_12 image_name x y width height add# 

int main(int argc, char** argv)

cvreleaseimage(&src);

cvdestroywindow("example3_12_pre");

cvdestroywindow("example3_12_post");

return 0;

}

書中源程式使用

sub_img->imagedata = interest_img->imagedata +

interest_rect.y * interest_img->widthstep  +

interest_rect.x * interest_img->nchannels;

來找到感興趣區域的左上角座標,這樣是對藍色通道資料進行操作,我們可以在後面+1,或+2來對紅色或綠色通道來操作,如:interestimg->imagedata = src->imagedata + 120 * src->widthstep + 120 * src->nchannels + 1;來對紅色通道操作

在本程式中,出項了之前沒用過的函式「atoi()」,這是乙個將字元轉換為整形的函式,比如,命令引數中輸入的字串「12」,可以用該函式轉換為整形數「12」,同樣,atof()將字元轉換為浮點型……





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

兩種獲得感興趣矩形區域的方式 乙個是直接用函式 cvsetimageroi iplimage image,cvrect rect 其中image是載入的一幅影象,rect cvrect x,y,width,height x,y給出了矩形在原影象中的起點 從左上起 width,height給出了矩形的...

感興趣區域ROI

roi在目前的理解看來就是擷取影象的一部分進行想要的操作,比如要在一張圖的任意地方嵌入另一張圖,首先要做的事就是把要嵌入的所覆蓋的這塊地方圈出來,然後把要嵌入的放到這個框框裡就行了 建立roi的兩種方法 1 imgroi image rect x,y,width,height 直接指定一塊矩形,選出...

2 3 感興趣區域(ROI)

一 roi介紹 二 操作 一 roi介紹 我們可能對影象中的某乙個特定區域感興趣,改區域稱為感興趣區域 region of interest,roi 二 操作 1 顯示一幅影象的感興趣區域 image 200 400,200 400 例1 2 在同一影象中,將乙個區域複製到另乙個區域 image 2...