您的位置:首页 > 娱乐 > 八卦 > 大连建设工程信息网改名为什么_江西赣州最新疫情_服务营销的概念_前端优化网站

大连建设工程信息网改名为什么_江西赣州最新疫情_服务营销的概念_前端优化网站

2025/1/8 23:37:20 来源:https://blog.csdn.net/weixin_44855046/article/details/144979735  浏览:    关键词:大连建设工程信息网改名为什么_江西赣州最新疫情_服务营销的概念_前端优化网站
大连建设工程信息网改名为什么_江西赣州最新疫情_服务营销的概念_前端优化网站

【1】引言

前序已经对图像操作进行了广泛的学习,包括读取、放大缩小,改变BGR通道值等,相关链接包括且不限于:

python学opencv|读取图像-CSDN博客

python学opencv|读取图像(三)放大和缩小图像_python(1)使用opencv读取并显示图像;(2)使用opencv对图像进行缩放;(3)使用o-CSDN博客

python学opencv|读取图像(十四)BGR图像和HSV图像通道拆分-CSDN博客 

在此基础上,我们开始学习如何平移图像。

【2】官网教程

要想图像实现平移,需要调用cv2.warpAffine()函数。点击下述链接,直达该函数的官网说明:

OpenCV: Geometric Image Transformations

在官网,我们会看到:

图1

这里的几个参数意义为:

void cv::warpAffine     (     InputArray     src, #原始输入图像
        OutputArray     dst, #输出图像
        InputArray     M, #一个2X3矩阵
        Size     dsize, #输出图像大小
        int     flags = INTER_LINEAR, #图像转换插值方式,是可选参数,保持默认即可,不是此次重点
        int     borderMode = BORDER_CONSTANT, #边界类型,是可选参数,保持默认即可,不是此次重点
        const Scalar &     borderValue = Scalar() ) #边界值,是可选参数,保持默认即可,不是此次重点

【3】平移原理

要想实现图像平移,需要对M矩阵进行操作。

此时的M矩阵有两个可选变量x和y:

M=[[1,0,x],[0,1,y]],当x>0,图像向右移动x大小的位置;当y>0,图像向右下移动y大小的位置;当x和y取负值时图像分别向左和向上运动。

【4】代码测试

使用的的原始图像src.png为:

图2

先引入模块,把图片读取进来:

import cv2 as cv # 引入CV模块
import numpy as np #引入numpy模块# 读取图片
src = cv.imread('src.png')
rows=len(src) #读取图像行数
cols=len(src[0]) #读取图像列数

然后制定约束平移方向和大小的M矩阵:

M=np.float32([[1,0,50],[0,1,200]]) #M矩阵,x=50,y=200

然后把M矩阵代入cv2.warpAffine()函数,输出图像:

dst=cv.warpAffine(src,M,(cols,rows)) #输出图像
cv.imshow('src-pingyi', dst)  # 在屏幕展示绘制圆形的效果
cv.imwrite('src-pingyi.png', dst)  # 保存图像
cv.waitKey()  # 图像不会自动关闭
cv.destroyAllWindows()  # 释放所有窗口

此时获得的图像为:

图3

由图3可见,图像在x和y方向上进行了不同程度的平移。

【5】总结

掌握了python+opencv实现图像平移的操作技巧。

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com