先放**
這版的**有點錯誤,裡面的指標分配了記憶體以後沒有釋放,有可能會造成記憶體洩漏
問題原因已經找到了,現在有點累,休息一下。。。
大概說一下吧,主要是因為越界的問題
比如說反變換到輸入影象的時候,正確範圍應該是(0,in.rows-1)而不是(0,in.rows)
果然,這一版的函式還是有bug,影象的平移引數只能是正整數。。。正在修改中。。。
而且函式介面太次,只能實現cv_8uc1型別的影象的仿射變換
準備改進一下,同時實現cv_32fc1型別的影象的變換
// affine.cpp : 定義控制台應用程式的入口點。
//#include "stdafx.h"
#include #include #include #include #include #include #include using namespace cv;
using namespace std;
void imgaffine(cv::mat in,cv::mat out,cv::mat matrix);
// 123.cpp : 定義控制台應用程式的入口點。
//int _tmain(int argc, _tchar* argv)
void imgaffine(cv::mat in,cv::mat out,cv::mat matrix)
else
data_out[i]=zhizhen[xx];
}} }
}
最近在往zedboard上面移植opencv的演算法,一切都挺順利的
只是有乙個意料之外的問題
在arm上面做仿射變換時,得到的是乙個錯誤的影象
剛開始懷疑是opencv庫版本比較低的問題
可是換了高版本的庫以後還是沒用
這期間有乙個比較蠢的錯誤
首先反思一下
就是設定opencv庫的路徑的時候,因為比較懶,沒有複製檔案路徑,而是直接把2.3.1替換為2.4.8,結果沒有注意資料夾名字的大小寫問題
浪費了一天時間
昨天做linaro的圖形介面
也是因為比較懶
沒有重新製作檔案系統
浪費了一天時間
到了今天
自己編寫仿射變換的函式時
想偷懶,一直在師兄之前寫的乙個程式的基礎上面改
改了一天沒弄好
50+的**
寫了一天
結果剛才痛下決心自己重頭寫
一次通過!
事實證明,往往自己覺得最麻煩的方案才是最正確的方案
OpenCV實現仿射變換
乙個任意的仿射變換都能表示為 乘以乙個矩陣 線性變換 接著再 加上乙個向量 平移 綜上所述,我們能夠用仿射變換來表示 旋轉 線性變換 平移 向量加 縮放操作 線性變換 你現在可以知道,事實上,仿射變換代表的是兩幅圖之間的關係.全域性變數 char source window source image...
OpenCV 仿射變換
一 仿射變換 仿射變換是一種二維座標之間的變換,變換前後保持圖形的平直性和平行性。仿射變換可以理解為是向量經過一次線性變換和一次平移變換。void warpaffine inputarray src,outputarray dst,inputarray m,size dsize,int flags ...
opencv 仿射變換
仿射變換的兩種方式 1 利用變換前後的三個座標點達到變換目的。2 使用旋轉角度和縮放倍數來變換。在實際的使用中,採用1的方式比較方便,但是有乙個問題 變換之後的矩陣大小該如何正確設定,如果設定大小不合適,會導致圖的實際區域超出邊界。所以在此記錄一下解決辦法。思路 由於已知了變換前後的三個座標點,可以...