从我之前的帖子中, OpenCV : algorithm for simple image rotation and reduction
我仍然无法将图像旋转任意数字,但只能旋转90度。 从那以后我改变了我的代码,现在是
Mat image1 = imread("Balloon.jpg", CV_LOAD_IMAGE_ANYCOLOR);
Mat rotC(image1.cols, image1.rows, image1.type());
#define PI 3.14156
void rotation(Mat image1)
{
int hwidth = image1.rows / 2;
int hheight = image1.cols / 2;
double angle = 45.00 * PI / 180.0;
for (int x = 0;x < image1.rows;x++) {
for (int y = 0; y < image1.cols;y++) {
int xt = x - hwidth;
int yt = y - hheight;
int xs = (int)round((cos(angle) * xt - sin(angle) * yt) + hwidth);
int ys = (int)round((sin(angle) * xt + cos(angle) * yt) + hheight);
rotC.at<Vec3b>(x,y) = image1.at<Vec3b>(xs, ys);
}
}
}
int main()
{
rotation(image1);
imshow("color", rotC);
waitKey(0);
}
rotC.at<Vec3b>(x,y) = image1.at<Vec3b>(xs, ys);
这是我的代码有错误的唯一部分吗? 我试图将我的结果链接回新的旋转然后用imshow显示它。 请让我知道我需要做什么才能使其旋转任意数字,如30度,46度等。