OpenCV Mat 旋转得到错误结果

2023-12-03

我想将图像旋转 90 度。我的代码如下:

int main(int argc, const char * argv[]) {
    Mat img = imread("/Users/chuanliu/Desktop/src4/p00.JPG");

    resize(img, img, Size(1024, 683));
    imwrite("/Users/chuanliu/Desktop/resize.jpg", img);
    Mat dst;
    Mat rot_mat = getRotationMatrix2D(Point(img.cols / 2.0, img.rows / 2.0), 90, 1);
    warpAffine(img, dst, rot_mat, Size(img.rows, img.cols));

    imwrite("/Users/chuanliu/Desktop/roatation.jpg", dst);

    return 0;
}

But the result is like following:
Before rotation:
enter image description here

After rotation:
enter image description here

看来旋转中心出了问题。但我不认为我设置了错误的中心。有人可以告诉我出了什么问题吗?


中心根据源图像的尺寸指定Point(img.cols / 2.0, img.rows / 2.0)但您不仅旋转图像,而且在调用时交换输出大小的宽度和高度warpAffine:

Size(img.rows, img.cols)

所以看起来您可能需要根据输出图像坐标指定中心;例如。Point(rows/2, cols/2).

Update:

不,这不是解决方案。实际上有一种非常简单有效的方法可以将图像旋转 90 度:使用cv::transpose()功能:

int main()
{
    cv::Mat img = cv::imread("5syfi.jpg");
    cv::Mat img_rotated;

    cv::transpose(img, img_rotated);  

    cv::imwrite("out.jpg", img_rotated);

    return 0;
}

使用组合cv::transpose()(旋转)和cv::flip()(垂直和水平镜像)您可以非常快速地执行 90、180 和 270 度旋转。

Using warpAffine()更灵活,但计算成本也更高(即更慢)。因此,如果您只需要旋转 90 度的倍数,请使用cv::transpose。如果需要旋转任意角度,请使用warpAffine/warpPerspective功能。 @Micka 的回答给出了如何做到这一点的一个很好的例子。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenCV Mat 旋转得到错误结果 的相关文章

随机推荐

  • Java BigDecimal 三角方法

    我正在开发一个数学解析器 它能够像这样评估字符串 5 b sqrt c 2 我正在使用 ANTLR 进行解析并取得了良好的进展 现在我迷上了Java课程BigDecimal并想 嘿 为什么不考虑这里的精度呢 我的问题是 Java API 没
  • 在 Django 中,如何检查用户是否属于某个组?

    我在 Django 的管理站点中创建了一个自定义组 在我的代码中 我想检查用户是否属于该组 我怎么做 Your User对象链接到Group对象通过一个多对多关系 您可以因此应用filter方法用户组 因此 要检查给定用户是否属于某个组 例
  • 检查迭代器是否有效

    有没有什么方法可以检查迭代器 无论是来自向量 列表 双端队列 是否 仍然 可取消引用 即尚未失效 我一直在使用try catch 但是有没有更直接的方法来做到这一点 示例 这不起作用 list
  • C# 定时器和内存泄漏

    我正在创建一个程序 每 2 秒检查一次目录列表 我希望这个程序能够运行数月而不会泄漏内存或需要任何人机交互 下面的程序有内存泄漏 我仍然不确定10K代表什么 这不是间隔 间隔为2k class Program static void Mai
  • ClearCase 中是否有 RTC 等效的“挂起模式”?

    我发现 RTC 中的 暂停更改设置 非常有用 而且由于我们也在使用 ClearCase 数十个用户 我想知道 ClearCase 中是否也提供该功能 如果不是 它可以由 script trigger hook 生成吗 我们使用UCM 我想解
  • 无法在 igraph 上绘制网络

    我的二进制图基于边缘列表 每个顶点都是股 票市场上的一个股票行情 例如 BARC Barclay s net full phase1 graph edgelist full phase1 directed FALSE V net full
  • 检查是否支持 UIGraphicsBeginImageContextWithOptions

    我正在开发一个 iOS 应用程序 它目前仅适用于 iOS 4 因为我多次使用以下方法 UIGraphicsBeginImageContextWithOptions 此方法仅在 iOS 4 中可用 因此我的应用程序当前崩溃 无法在 iPhon
  • Symfony 3 Twig\Extension\AbstractExtension 在生产模式下未找到错误

    我有一个在开发模式下运行良好的应用程序 但是当我在生产中运行它时会弹出 Fatal error Class Twig Extension AbstractExtension not found in C Users wackm Phpsto
  • 从 Spring 4.xxx 迁移到 Spring 5,保留 EJB 和 Web 模块

    Hi All 服务器 Websphere 9 应用程序在 Spring 4 上运行良好 我们希望迁移到 Spring 5 我们遇到了 DI 依赖注入 的问题 Spring 4 中有 EJB 模块 带有消息驱动 Bean 和 Web 模块 我
  • 清理嵌套的 mod_rewrite 语句

    我正在清理一个大 htaccess文件包含很多mod rewrite声明 混乱的最大部分来自捕获各种事件的语句 directory1 directory1 directory2 directory1 directory2 directory
  • 如何使 Laravel 雄辩地进行“IN”查询?

    我想在 Laravel Eloquent 中进行查询 就像这里的原始 MySQL 查询一样 SELECT from exampleTbl where id in 1 2 3 4 我已经在 Laravel Eloquent 中尝试过这个 但它
  • 将java对象序列化为文本文件

    我有一个java库 我想将java对象的实例保存到文本文件中 我尝试使用所有java库进行序列化和反序列化为xml http karussell wordpress com 2009 09 03 xml serializers for ja
  • 在Python中从文本文件读取多个变量的聪明方法

    我正在尝试加载存储在单个文本文件中的多个向量和矩阵 对于 numpy 该文件如下所示 VectorA 1 2 3 4 MatrixA 1 2 3 4 5 6 VectorB 3 4 5 6 7 理想的解决方案是拥有一个字典对象 例如 Vec
  • py2exe 因 pandas 导入失败

    我有一个 python 脚本 我想使用 py2exe 将其制作成可执行文件 当我尝试导入 pandas 时它失败了 这实际上是我的示例失败脚本中的全部内容 import pandas 回溯看起来像 File c users appdata
  • javascript 在数组中的对象之间保留某些属性

    我想从数组中的对象中删除每个属性 除了其中一些属性 var listToKeep name school var arrayOfObjects id abc name oh school a sport a id efg name em s
  • 模板静态成员初始化顺序

    我有一个与此处发布的上一个问题相关的问题静态字段初始化顺序假设我有以下结构 有 2 个静态成员x and y 模板类型本身 include
  • Android - 为我的应用程序创建一个将从网页链接打开的架构

    我正在尝试创建一个类似 myapp somthing anotherthing 的架构 如果网页或任何其他应用程序链接到该架构将打开我的应用程序 我已将其添加到我的 AndroidManifest xml 中以用于我的主要活动
  • BufferGeometry 面材质

    使用 BufferGeometry 时 如何将材质分配给面 是否有类似数组包含相同信息的东西Face materialIndex BufferGeometry不支持MeshFaceMaterial
  • 将sql查询输出到html表中

    我试图将此 PHP SQL 查询的输出放入数据库表中 但它将所有行数据输出到一列中 if isset POST submit name htmlentities POST name parts explode name lastname a
  • OpenCV Mat 旋转得到错误结果

    我想将图像旋转 90 度 我的代码如下 int main int argc const char argv Mat img imread Users chuanliu Desktop src4 p00 JPG resize img img