基礎:void cvwarpaffine( const cvarr* src, cvarr* dst, const cvmat* map_matrix,
int flags=cv_inter_linear+cv_warp_fill_outliers,
cvscalar fillval=cvscalarall(0) );
src
輸入影象.
dst
輸出影象.
map_matrix
2×3 變換矩陣
flags
插值方法和以下開關選項的組合:
cv_warp_fill_outliers - 填充所有輸出影象的象素。如果部分象素落在輸入影象的邊界外,那麼它們的值設定為 fillval.
cv_warp_inverse_map - 指定 map_matrix 是輸出影象到輸入影象的反變換,因此可以直接用來做象素插值。否則, 函式從 map_matrix 得到反變換。
fillval
用來填充邊界外面的值
稠密仿射變換,這個就跟前面說到的卷積變換cvfilter2d()和cvcopymakeborder()一樣,是其他變換的基礎。其他變換只是用到這些函式。而上面的拉伸,扭曲這些座標變換就是以這個cvwarpaffine()為基礎。
函式中的對映矩陣求法:
cvmat* cvgetaffinetransform( const cvpoint2d32f* src, const cvpoint2d32f* dst, cvmat* map_matrix );
src
輸入影象的三角形頂點座標。
dst
輸出影象的相應的三角形頂點座標。
map_matrix
指向2×3輸出矩陣的指標。
特徵對映矩陣求法2:
cvmat* cv2drotationmatrix( cvpoint2d32f center, double angle,
double scale, cvmat* map_matrix );
center
輸入影象的旋轉中心座標
angle
旋轉角度(度)。正值表示逆時針旋轉(座標原點假設在左上角).
scale
各項同性的尺度因子
map_matrix
輸出 2×3 矩陣的指標
#include
#include
#define affine
#ifdef affine
int main(int argc, char** argv)
cvreleaseimage(&dst);
cvreleasemat(&rot_mat);
cvreleasemat(&warp_mat);
return 0;
}#endif
熱浪扭曲效果
熱浪扭曲 每個人都對自然界中的這種大氣效果很熟悉 光線在穿過不同密度的介質時會彎曲 熱微光 熱空氣密度比冷空氣小 密度影響介質的折射率 熱空氣上公升的同時會被冷空氣替代,這會改變光射入眼睛的路線 渲染場景到rgba離屏快取 可渲染的紋理 顏色寫入rgb值 扭曲度寫入alpha通道 繪製全屏長方形到後...
熱浪扭曲效果
熱浪扭曲 每個人都對自然界中的這種大氣效果很熟悉 光線在穿過不同密度的介質時會彎曲 熱微光 熱空氣密度比冷空氣小 密度影響介質的折射率 熱空氣上公升的同時會被冷空氣替代,這會改變光射入眼睛的路線 渲染場景到rgba離屏快取 可渲染的紋理 顏色寫入rgb值 扭曲度寫入alpha通道 繪製全屏長方形到後...
unity Shader 扭曲效果
所謂扭曲就是擾動乙個物體的uv座標,表現出來就是乙個擾動效果,如火焰扭曲空氣,和水波對水底的影響。1.在shader 中我們需要一張當前渲染的紋理 2.給乙個物體渲染並使用當前紋理,用螢幕座標作為uv座標加上乙個擾動值 1.unity提供了抓取的pass grabpass unity官網介紹 每次遇...