广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++ opencv图像处理怎么实现图片几何变换
  • 490
分享到

C++ opencv图像处理怎么实现图片几何变换

2023-06-30 13:06:24 490人浏览 八月长安
摘要

本文小编为大家详细介绍“c++ OpenCV图像处理怎么实现图片几何变换”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++ opencv图像处理怎么实现图片几何变换”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入

本文小编为大家详细介绍“c++ OpenCV图像处理怎么实现图片几何变换”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++ opencv图像处理怎么实现图片几何变换”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

    简介

    图像的几何变换不改变图像的像素值,而是改变像素所在的几何位置,从变换的性质来分,图像的几何变换有图像的位置变换(平移,镜像,旋转)、图像的形状变换(放大,缩小,错切)等基本变换,以及图像的复合变换等,

    一、图像平移

    图像平移是将一幅图像中所有的点都按照指定的平移量在水平,垂直方向移动,平移后的图像与原图像相同,平移后的图像上的每一个点都可以在原图像中找到对应的点。图像是由像素组成,假设原来的像素坐标为(x0,y0),经过平移量(△x,△y)坐标变为(x1,y1)

    数学可以表示:x1=x0+△x,y1=y0+△xy

    平移变换分为两种,一种是图像大小改变,这样最后的原图像会有一部分不在图像中,另一种是图像大小改变,这样可以保全原图像的内容

    1.图像平移代码 (不改变图像大小)

    #include<iOStream>#include<opencv.hpp>using namespace std;using namespace cv;int main(){Mat img1;img1 = imread("猫1.jpg");imshow("原图", img1);int r = img1.rows;int c = img1.cols;int x0 = 100;int y0 = 100;Mat img2(img1.size(), img1.type());for (int i = 0; i < r; i++){for (int j = 0; j < c; j++){int x = j - x0;int y = i - y0;if (x >= 0 && y >= 0 && x < c&&y < r){img2.at<Vec3b>(i, j) = img1.ptr<Vec3b>(y)[x];}}}imshow("不改变图像大小", img2);waiTKEy(0);}

    效果如下:

    C++ opencv图像处理怎么实现图片几何变换

    2.图像平移代码 (改变图像大小)

    代码如下(示例):

    int main(){Mat img1;img1 = imread("猫1.jpg");imshow("原图", img1);int x0 = 100;int y0 = 100;int r = img1.rows + y0;int c = img1.cols + x0;Mat img2(r,c, img1.type());for (int i = 0; i < r; i++){for (int j = 0; j < c; j++){int x = j - x0;int y = i - y0;if (x >= 0 && y >= 0 && x < c&&y < r){img2.at<Vec3b>(i, j) = img1.ptr<Vec3b>(y)[x];}}}imshow("改变图像大小", img2);waitKey(0);}

    效果如下:

    C++ opencv图像处理怎么实现图片几何变换

    二、图像旋转

    图像旋转是数字图像处理的一个非常重要的环节,是图像的几何变换的手法之一。一般图像的旋转是图像的位置变换,但旋转后,图像的大小一般会改变。在图像旋转变换中,既可以把转出显示区域的图像截去,也可以扩大图像范围以显示所用的图像。

    1.图像旋转函数

    opencv提供的getRotationMatrix2D函数来实现图像旋转,用来计算出旋转矩阵。

    Mat getRotationMatrix2D(Point2f center, double angle, double scale)center 旋转中心点angle  旋转的角度scale 图像缩放因子

    2.仿射变换函数

    计算出旋转矩阵后,还需要把旋转应用到仿射变换的输出,仿射变换函数是warpAffine

    void warpAffine(InputArray src, OutputArray dst,InputArray M, Size dsize,int flags = INTER_LINEAR,int borderMode = BORDER_CONSTANT,const Scalar& borderValue = Scalar());src 输入dst 输出M 变换矩阵Size 尺寸flags 插值算法标识符borderMode 边界像素模式borderValue 边界取值

    3.代码

    int main(){Mat img1;img1 = imread("猫1.jpg");imshow("原图", img1);Point center(img1.cols / 2, img1.rows / 2);Mat m = getRotationMatrix2D(center, 30, 0.5);Mat img2;warpAffine(img1, img2, m, img1.size());imshow("旋转", img2);waitKey(0);}

    效果如下:

    C++ opencv图像处理怎么实现图片几何变换

    三、图像缩放

    图像比例缩放是值将给定的图像在x轴方向按比例缩放fx倍,在y轴方向按比例缩放fy倍

    1.图像缩放函数

    void resize(InputArray src, OutputArray dst,Size dsize, double fx = 0, double fy = 0,int interpolation = INTER_LINEAR);src 输入dst 输出dsize 尺寸fx 在x轴缩放比例fy 在y轴缩放比例interpolation 插值方式

    2.图像缩小代码

    int main(){Mat img1;img1 = imread("猫1.jpg");imshow("原图", img1);Mat img2;resize(img1, img2, Size(img1.cols / 2, img1.rows / 2));imshow("缩小", img2);waitKey(0);}

    效果如下:

    C++ opencv图像处理怎么实现图片几何变换

    3.图像放大代码

    int main(){Mat img1;img1 = imread("猫1.jpg");imshow("原图", img1);Mat img2;resize(img1, img2, Size(img1.cols * 2, img1.rows * 2));imshow("放大", img2);waitKey(0);}

    效果如下:

    C++ opencv图像处理怎么实现图片几何变换

    读到这里,这篇“C++ opencv图像处理怎么实现图片几何变换”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网其他教程频道。

    --结束END--

    本文标题: C++ opencv图像处理怎么实现图片几何变换

    本文链接: https://www.lsjlt.com/news/329306.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • C++ opencv图像处理怎么实现图片几何变换
      本文小编为大家详细介绍“C++ opencv图像处理怎么实现图片几何变换”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++ opencv图像处理怎么实现图片几何变换”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入...
      99+
      2023-06-30
    • C++opencv图像处理实现图片几何变换示例
      目录简介一、图像平移1.图像平移代码 (不改变图像大小)2.图像平移代码 (改变图像大小)二、图像旋转1.图像旋转函数2.仿射变换函数3.代码三、图像缩放1.图像缩放函数2.图像缩小...
      99+
      2022-11-13
    • opencv实现图像几何变换
      本文实例为大家分享了opencv实现图像几何变换的具体代码,供大家参考,具体内容如下 图像伸缩(cv2.resize) 图像的扩大与缩小有专门的一个函数,cv2.resize(),那...
      99+
      2022-11-11
    • opencv如何实现图像几何变换
      这篇文章给大家分享的是有关opencv如何实现图像几何变换的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。图像伸缩(cv2.resize)图像的扩大与缩小有专门的一个函数,cv2.resize(),那么关于伸缩需要...
      99+
      2023-06-14
    • OpenCV图像处理之七种常用图像几何变换
      目录0 程序环境与所学函数1 裁剪、放大、缩小2 平移变换3 错切变换4 镜像变换5 旋转变换6 透视变换7 最近邻插值、双线性插值0 程序环境与所学函数 本章程序运行需要导入下面三...
      99+
      2022-11-12
    • C++ opencv图像处理实现灰度变换示例
      目录灰度变换概念灰度变换的作用灰度变换的方法灰度化灰度的概念对彩色图进行灰度化1.加权平均值法2.取最大值3.平均值灰度的线性变换1.线性变换2.分段线性变换灰度的非线性变换1.对数...
      99+
      2022-11-13
    • OpenCV实现常见的四种图像几何变换
      目录准备图片1. 缩放 cv2.resize()方法2. 翻转 cv2.flip()方法3. 仿射变换 warpAffine()方法3.1 平移3.2 旋转3.3 倾斜4. 透视准备...
      99+
      2022-11-13
    • Python图像处理之几何变换
      目录一.图像几何变换二.图像平移三.图像缩放四.图像旋转五.总结一.图像几何变换 图像几何变换不改变图像的像素值,在图像平面上进行像素变换。适当的几何变换可以最大程度地消除由于成像角...
      99+
      2022-11-13
    • C++ opencv图像处理实现图片边缘检测示例
      目录边缘检测简介一、边缘检测步骤二、Canny1.函数2.代码二、Sobel1.函数2.代码三、Scharr1.函数2.代码四、Laplacian1.函数2.代码总结边缘检测简介 边...
      99+
      2022-11-13
    • C++ opencv图像处理使用cvtColor实现颜色转换
      目录前言源码效果图代码颜色空间转换代码前言 在我们读取图像时通常会用到imread()函数,里面flags可以决定通道数,来得到我们想要的图像,比如: -1 按解码得到的方式读入图像...
      99+
      2022-11-13
    • 图文详解matlab原始处理图像几何变换
      目录(一)图像几何变换理论知识(1)图像的平移与比例(2)关于旋转变换(3)关于对称变换(4)复合变换(二)matlab编程实现变换(1)对图像的理解(2)比例变换(3)对称变换总结...
      99+
      2022-11-12
    • Python OpenCV如何实现图像傅里叶变换
      这篇文章给大家分享的是有关Python OpenCV如何实现图像傅里叶变换的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。二维离散傅里叶变换(DFT)对于二维图像处理,通常使用 x , y x, yx,y...
      99+
      2023-06-28
    • OpenCV怎么通过透视变换实现矫正图像
      这篇“OpenCV怎么通过透视变换实现矫正图像”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“OpenCV怎么通过透视变换实现...
      99+
      2023-07-05
    • C++ opencv图像处理实现图像腐蚀和膨胀示例
      目录1 概念2 膨胀3 腐蚀1 概念 1.1 腐蚀跟膨胀是最基本的形态学运算 1.2 腐蚀跟膨胀是对图像的白色的部分(亮光部分)进行操作 1.3 腐蚀是对亮光部分进行腐蚀 拥有比原图...
      99+
      2022-11-13
    • 如何分析Python图像处理中的几何变换
      今天就跟大家聊聊有关如何分析Python图像处理中的几何变换,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一.图像几何变换图像几何变换不改变图像的像素值,在图像平面上进行像素变换。适...
      99+
      2023-06-29
    • OpenCV如何通过透视变换实现矫正图像
      这篇“OpenCV如何通过透视变换实现矫正图像”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“OpenCV如何通过透视变换实现...
      99+
      2023-07-05
    • Python编程OpenCV和Numpy图像处理库实现图片去水印
      目录OpenCV + Numpy函数简介色彩转换PIL + itertools大家好,我是小五 前一阵给大家分享了,Python如何给图片加水印。评论区就有小伙伴问,可不可使用Pyt...
      99+
      2022-11-12
    • OpenCV和C++实现图像的翻转(镜像)、平移、旋转、仿射与透视变换
      目录一、翻转(镜像)二、仿射扭曲获取变换矩阵仿射扭曲函数 warpAffine旋转平移三、仿射变换四、透视变换综合示例总结官网教程 一、翻转(镜像) 头文件 quick_opencv...
      99+
      2022-11-12
    • 怎么使用Python+OpenCV实现图像识别替换功能
      本文小编为大家详细介绍“怎么使用Python+OpenCV实现图像识别替换功能”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用Python+OpenCV实现图像识别替换功能”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来...
      99+
      2023-07-02
    • Java数字图像处理之图像灰度处理怎么实现
      本篇内容介绍了“Java数字图像处理之图像灰度处理怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、简介图像灰度化处理可以作为图像处...
      99+
      2023-07-02
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作