gpt4 book ai didi

c++ - 如何在 OpenCV C++ 中使用 warpAffine 函数

转载 作者:行者123 更新时间:2023-11-28 05:07:17 25 4
gpt4 key购买 nike

我需要使用仿射变换来扭曲图像。我得到的错误是“代码已崩溃”。

谁能告诉我我的代码有什么问题?

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);

//
// ....
// ....

关于c++ - 如何在 OpenCV C++ 中使用 warpAffine 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44393220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com