OpenCV函式remap詳解

2021-09-11 17:40:35 字數 1448 閱讀 4172

remap的作用是將原影像對映到目標影像的函式。

這是opencv文件中的說明。

但這個描述給人的感覺是,雲裡霧裡,到底是需要計算目標到原的對映關係,還是原到目標的對映呢。

經過我的實驗發現是需要給出目標到原的對映關係。

即:

見下**

原就是mapx和mapy

目標是i,j,即當前畫素

mat src_cpu = imread(in_filename);

cv::mat mapx, mapy;

mapx.create(src_cpu.size(), cv_32fc1);

mapy.create(src_cpu.size(), cv_32fc1);

//將影象放大2倍

//cv::mat change = (cv::mat_(2, 2) << 0.5, 0, 0, 0.5);

//順時針旋轉30度

cv::mat change = (cv::mat_(2, 2) << 0.866, -0.5, 0.5, 0.866);

float a11 = change.at(0, 0);

float a12 = change.at(0, 1);

float a21 = change.at(1, 0);

float a22 = change.at(1, 1);

float b11 = 1 - change.at(0, 0);

float b12 = -change.at(0, 1);

float b21 = -change.at(1, 0);

float b22 = 1- change.at(1, 1);

float u0 = src_cpu.size().width / 2 + cx;

float v0 = src_cpu.size().height / 2 + cy;

for (int i = 0; i(j, i) = a11*i + a12*j + u0*b11 + v0*b12;

mapy.at(j, i) = a21*i + a22*j + u0*b21 + v0*b22;

} cv::mat dst;

cv::remap(src_cpu, dst, mapx, mapy, inter_linear);

imshow("img", src_cpu);

imshow("undistort", dst);

waitkey(0);

OpenCV的雙目相機remap

雙目相機的remap主要是為了解決 極線對齊 的問題,需要輸入相機的內外引數,分別產生左圖x方向 y方向和右圖x方向 y方向的remap 並由這個 按照lut對原影象進行 極限校正 對極幾何是雙目相機立體標定的數學基礎,相關知識點參考 主要思路是 1 讀入雙目相機的內外引數 filestorage ...

OpenCV中Hough函式各引數詳解

cvhoughlines2 說明 此函式是opencv影象變換函式中的乙個,主要用來訪問霍夫變換的兩個演算法 標準霍夫變換 sht 和累計概率霍夫變換 ppht 函式原型 cvseq cvhonghlines2 cvarr image,void line storage,int mehtod,dou...

OpenCV自學(二) 模板匹配函式詳解

matchtemplate函式的源 在opencv的源 目錄下的 modules imgproc src templmatch.cpp 檔案中。其核心函式 如下 void matchtemplate const mat img,const mat templ,mat result,int metho...