![](/img/trans.png)
[英]get new location of cv::rect after rotation image by warpAffine (opencv , c++)
[英]How to use warpAffine function in OpenCV C++
我需要使用仿射變換來扭曲圖像。 我得到的錯誤是“代碼已崩潰”。
誰能告訴我我的代碼有什么問題嗎?
Mat imgAffine, image, par;
image = imread("/media/sf_vbox_share/ubuntushare/board.jpg",1);
par.at<double>(0,0)= 1.01121; //p1
par.at<double>(1,0)= 0.21067; //p2;
par.at<double>(0,1)= -89.69693; //p3;
par.at<double>(1,1)= - 0.11557; //p4;
par.at<double>(0,2)= 1.44982; //p5;
par.at<double>(1,2)= -193.66149;//p6;
imgAffine = Mat::zeros(image.rows, image.cols, image.type());
warpAffine(image,imgAffine,par, image.size(),INTER_LINEAR);
namedWindow("image",WINDOW_AUTOSIZE);
imshow("image",imgAffine);
cvWaitKey(0);
par
大小未定義,因此在嘗試向其寫入元素時,很可能會給您帶來分段錯誤。 在設置其元素之前,請先嘗試為其分配內存:
// Your code
Mat imgAffine, image, par;
image = imread ("/media/sf_vbox_share/ubuntushare/board.jpg",1);
// New code
par = Mat(2, 3, CV_64FC1); // Allocate memory
// Rest of your code
par.at<double>(0,0)= 1.01121; //p1
par.at<double>(1,0)= 0.21067 ; //p2;
par.at<double>(0,1)= -89.69693; //p3;
par.at<double>(1,1)= - 0.11557; //p4;
par.at<double>(0,2)= 1.44982; //p5;
par.at<double>(1,2)= -193.66149;//p6;
//
// ....
// ....
或者,可以在聲明par
時使用cv::Mat
的構造函數,因此在代碼的開頭:
Mat imgAffine, image;
Mat par(2, 3, CV_64FC1);
// Rest of your code
image = imread ("/media/sf_vbox_share/ubuntushare/board.jpg",1);
//
// ....
// ....
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.