相关疑难解决方法(0)

OpenCV Python围绕特定点旋转图像X度

我很难找到使用OpenCV在Python中以特定(通常非常小)的角度围绕特定点旋转图像的示例.

这是我到目前为止所做的,但它会产生一个非常奇怪的结果图像,但它有点旋转:

def rotateImage( image, angle ):
    if image != None:
        dst_image = cv.CloneImage( image )

        rotate_around = (0,0)
        transl = cv.CreateMat(2, 3, cv.CV_32FC1 )

        matrix = cv.GetRotationMatrix2D( rotate_around, angle, 1.0, transl )
        cv.GetQuadrangleSubPix( image, dst_image, transl )
        cv.GetRectSubPix( dst_image, image, rotate_around )

    return dst_image
Run Code Online (Sandbox Code Playgroud)

python opencv rotation

44
推荐指数
7
解决办法
7万
查看次数

使用cv :: warpAffine偏移目标图像来旋转cv :: Mat

我正在尝试使用OpenCV 的C++ API1296x968图像旋转90度,我遇到了一些问题.

输入: 输入

旋转: 产量

如您所见,旋转的图像存在一些问题.首先,它具有与原始尺寸相同的尺寸,即使我专门Mat使用原始尺寸的反转尺寸创建目的地.结果,目标图像被裁剪.

我怀疑这种情况正在发生,因为我正在调用warpAffine()并传递原始Mat大小而不是目标大小Mat.但我这样做是因为我遵循了这个答案,但现在我怀疑答案可能是错的.所以这是我的第一个怀疑/问题.

第二,是,warpAffine()在一定的书面形式向目的地偏移(可能在旋转的数据复制到图像中)和该操作留下了可怕的大黑边的图像周围.

我该如何解决这些问题?

我正在分享以下源代码:

#include <cv.h>
#include <highgui.h>
#include <iostream>

using namespace cv;
using namespace std;

void rotate(Mat& image, double angle)
{
    Point2f src_center(image.cols/2.0F, image.rows/2.0F);

    Mat rot_matrix = getRotationMatrix2D(src_center, angle, 1.0);

    Mat rotated_img(Size(image.size().height, image.size().width), image.type());

    warpAffine(image, rotated_img, rot_matrix, image.size());
    imwrite("rotated.jpg", rotated_img);
}

int main(int argc, char* argv[])
{ …
Run Code Online (Sandbox Code Playgroud)

c++ opencv image-processing rotation

20
推荐指数
3
解决办法
4万
查看次数

标签 统计

opencv ×2

rotation ×2

c++ ×1

image-processing ×1

python ×1