imgproc模組 Remapping重對映

2021-08-02 16:54:24 字數 2729 閱讀 2291

1.目的

(1)如何使用opencv函式remap實現簡單的重對映

2.原理

把乙個影象中乙個位置的畫素放置到另乙個指定位置的過程,為了完成對映過程, 有必要獲得一些插值為非整數畫素座標,因為源影象與目標影象的畫素座標不是一一對應的。我們通過重對映來表達每個畫素的位置(x,y):

g(x,y)= f(h(x,y))
這裡 g 是目標影象, f 是源影象, h(x,y) 是作用於 (x,y) 的對映方法函式。

3.部分**解釋

(1)remap

/*

src:輸入影象

dst:輸出影象

map_x:表示點(x,y)的x對映,cv_32fc1或者cv_16sc2型別

map_y:表示點(x,y)的y對映,cv_32fc1或者cv_16sc2型別

cv_inter_linear:非整數插值型別,

包括四個:cv_inter_linear:雙線性插值,

cv_inter_cubic:三樣條插值,

cv_inter_nearest:最近臨插值,

cv_inter_lanczos4:lanczos插值(預設)

border_constant:預設邊界

scalar(0,0,0):邊界顏色,預設為黑色

*/remap(src, dst, map_x, map_y, cv_inter_linear, border_constant, scalar(0,0,0));

4.完整**

(1)commoninclude.h

#ifndef common_include

#define common_include

#include

using

namespace

std;

#include

#include

#include

using

namespace cv;

#endif

#include"commoninclude.h"

int type = 0;

int max_type = 3;

mat src, dst;

mat map_x, map_y;

for(int x=0; xfor(int y=0; yswitch(type)

//縮放一倍數

break;

case(1):

//左右翻轉

map_x.at(x,y) = src.cols - x;

map_y.at(x,y) = y;

break;

case(2):

//上下翻轉

map_x.at(x,y) = x;

map_y.at(x,y) = src.rows - y;

break;

case(3):

//中心對稱翻轉

map_x.at(x,y) = src.cols - x;

map_y.at(x,y) = src.rows - y;

break;

default:

cout

<< "error type!!!"

<< endl;

break;

} }}

/* src:輸入影象

dst:輸出影象

map_x:表示點(x,y)的x對映,cv_32fc1或者cv_16sc2型別

map_y:表示點(x,y)的y對映,cv_32fc1或者cv_16sc2型別

cv_inter_linear:非整數插值型別,

包括四個:cv_inter_linear:雙線性插值,

cv_inter_cubic:三樣條插值,

cv_inter_nearest:最近臨插值,

cv_inter_lanczos4:lanczos插值(預設)

border_constant:預設邊界

scalar(0,0,0):邊界顏色,預設為黑色

*/remap(src, dst, map_x, map_y, cv_inter_linear, border_constant, scalar(0,0,0));

imshow(windowname, dst);

}int main(int argc, char** argv)

src = imread(argv[1]);

if(!src.data)

src.type());

map_x.create(src.size(), cv_32fc1);

map_y.create(src.size(), cv_32fc1);

namedwindow(windowname, cv_window_autosize);

cout

<< src.size() << endl;

//cvtcolor(src, src, cv_bgr2gray);

//cout << src.size() << endl;

createtrackbar("type:\n0:縮放一倍\n1:左右翻轉\n2:上下翻轉\n3:中心對稱翻轉", windowname,

&type, max_type,

waitkey(0);

return(0);

}

參考文獻

1.

imgproc模組 模板匹配

1.目的 1 使用opencv函式matchtemplate 在輸入影象中搜尋影象塊 2 使用opencv函式minmaxloc 尋找陣列中的最大或者最小值 2.原理 1 模板匹配 給定乙個影象塊,搜尋配對的影象塊,當模板是矩形時候,並不一定所有的矩形塊內容都是相關的,在這種情況下,可以利用掩碼分離...

imgproc模組 Laplace邊緣檢測運算元

1.目的 1 如何使用opencv函式laplacian實現laplacian運算元的離散模擬 2.原理 在一階導數的極值位置,二階導數為0。所以我們也可以用這個特點來作為檢測影象邊緣的方法。laplacian運算元的定義 opencv函式 laplacian 實現了laplacian運算元。實際上...

imgproc模組 霍夫圓變換

1.目的 1 如何使用opencv的houghcircles在影象中檢測圓區域 2.原理 1 標準霍夫變換 霍夫圓變換可以根據霍夫線變換來實現 通過極座標來表示圓 a,b 表示圓心,r表示半徑,則圓表示為 x a rcos y b rsin 的值為0 360 一開始我們假設r是已知的,那麼我們就可以...