Python图像处理丨图像缩放、旋转、翻转与图像平移_根据用户选择的菜单实现图像的3种翻转!python(3)

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

rows, cols = src.shape[:2]
print rows, cols

#图像缩放 dsize(列,行)
result = cv2.resize(src, (int(cols0.6), int(rows1.2)))

#显示图像
cv2.imshow(“src”, src)
cv2.imshow(“result”, result)

#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()


输出结果如下图所示:


![](https://img-blog.csdnimg.cn/img_convert/39ee50f4017b7d1ceaa1e7c1463c45c6.png)


最后讲解(fx,fy)缩放倍数的方法对图像进行放大或缩小。



#encoding:utf-8
import cv2
import numpy as np

#读取图片
src = cv2.imread(‘test.jpg’)
rows, cols = src.shape[:2]
print rows, cols

#图像缩放
result = cv2.resize(src, None, fx=0.3, fy=0.3)

#显示图像
cv2.imshow(“src”, src)
cv2.imshow(“result”, result)

#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()


最后输出的结果如下图所示,这是按例比0.3\*0.3缩小的。


![](https://img-blog.csdnimg.cn/img_convert/1d20f2f227dbf65d80cba818a64922ac.png)


### 二、图像旋转


图像旋转主要调用getRotationMatrix2D()函数和warpAffine()函数实现,绕图像的中心旋转,具体如下:


* **M = cv2.getRotationMatrix2D((cols/2, rows/2), 30, 1)**  
 参数分别为:旋转中心、旋转度数、scale
* **rotated = cv2.warpAffine(src, M, (cols, rows))**  
 参数分别为:原始图像、旋转参数、原始图像宽高


图像旋转:设(x0, y0)是旋转后的坐标,(x, y)是旋转前的坐标,(m,n)是旋转中心,a是旋转的角度,(left,top)是旋转后图像的左上角坐标,则公式如下:



![](https://img-blog.csdnimg.cn/img_convert/db6b1b29f35f77b7be4e31077f4e7101.png)

代码如下所示:



#encoding:utf-8
import cv2
import numpy as np

#读取图片
src = cv2.imread(‘test.jpg’)

#原图的高、宽 以及通道数
rows, cols, channel = src.shape

#绕图像的中心旋转
#参数:旋转中心 旋转度数 scale
M = cv2.getRotationMatrix2D((cols/2, rows/2), 30, 1)
#参数:原始图像 旋转参数 元素图像宽高
rotated = cv2.warpAffine(src, M, (cols, rows))

#显示图像
cv2.imshow(“src”, src)
cv2.imshow(“rotated”, rotated)

#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()


输出结果如下图所示:


![](https://img-blog.csdnimg.cn/img_convert/e9e939b7601941dfaa9c1622bdc3a458.png)


如果设置-90度,则核心代码和图像如下所示。


M = cv2.getRotationMatrix2D((cols/2, rows/2), -90, 1)  
 rotated = cv2.warpAffine(src, M, (cols, rows))



![](https://img-blog.csdnimg.cn/img_convert/8898e072d517ec6fb482a9d2245f4c7a.png)

### 三、图像翻转


图像翻转在OpenCV中调用函数flip()实现,原型如下:


**dst = cv2.flip(src, flipCode)**


其中src表示原始图像,flipCode表示翻转方向,如果flipCode为0,则以X轴为对称轴翻转,如果fliipCode>0则以Y轴为对称轴翻转,如果flipCode<0则在X轴、Y轴方向同时翻转。


代码如下所示:



#encoding:utf-8
import cv2
import numpy as np
import matplotlib.pyplot as plt

#读取图片
img = cv2.imread(‘test.jpg’)
src = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)

#图像翻转
#0以X轴为对称轴翻转 >0以Y轴为对称轴翻转 <0X轴Y轴翻转
img1 = cv2.flip(src, 0)
img2 = cv2.flip(src, 1)
img3 = cv2.flip(src, -1)

#显示图形
titles = [‘Source’, ‘Image1’, ‘Image2’, ‘Image3’]
images = [src, img1, img2, img3]
for i in xrange(4):
plt.subplot(2,2,i+1), plt.imshow(images[i], ‘gray’)
plt.title(titles[i])
plt.xticks([]),plt.yticks([])
plt.show()


输出结果如下图所示:


![](https://img-blog.csdnimg.cn/img_convert/cd3c1948e743c15b26d32761f765f87a.png)


### 四、图像平移


图像平移:设(x0, y0)是缩放后的坐标,(x, y)是缩放前的坐标,dx、dy为偏移量,则公式如下:



![](https://img-blog.csdnimg.cn/img_convert/289710ede15114694cb887d815132d39.png)

图像平移首先定义平移矩阵M,再调用warpAffine()函数实现平移,核心函数如下:


**M = np.float32([[1, 0, x], [0, 1, y]])**  
**shifted = cv2.warpAffine(image, M, (image.shape[1], image.shape[0]))**


完整代码如下所示:



#encoding:utf-8
import cv2
import numpy as np
import matplotlib.pyplot as plt

#读取图片
img = cv2.imread(‘test.jpg’)
image = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)

#图像平移 下、上、右、左平移
M = np.float32([[1, 0, 0], [0, 1, 100]])
img1 = cv2.warpAffine(image, M, (image.shape[1], image.shape[0]))

M = np.float32([[1, 0, 0], [0, 1, -100]])
img2 = cv2.warpAffine(image, M, (image.shape[1], image.shape[0]))

M = np.float32([[1, 0, 100], [0, 1, 0]])
img3 = cv2.warpAffine(image, M, (image.shape[1], image.shape[0]))

M = np.float32([[1, 0, -100], [0, 1, 0]])
img4 = cv2.warpAffine(image, M, (image.shape[1], image.shape[0]))

#显示图形
titles = [ ‘Image1’, ‘Image2’, ‘Image3’, ‘Image4’]
images = [img1, img2, img3, img4]
for i in xrange(4):
plt.subplot(2,2,i+1), plt.imshow(images[i], ‘gray’)
plt.title(titles[i])
plt.xticks([]),plt.yticks([])
plt.show()


输出结果如下图所示:



![](https://img-blog.csdnimg.cn/img_convert/bb35db53b7b9333471519f04ae52d285.png)

华为伙伴暨开发者大会2022火热来袭,重磅内容不容错过!


文末有福利领取哦~
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

👉**一、Python所有方向的学习路线**

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。![img](https://img-blog.csdnimg.cn/c67c0f87cf9343879a1278dfb067f802.png)

👉**二、Python必备开发工具**

![img](https://img-blog.csdnimg.cn/757ca3f717df4825b7d90a11cad93bc7.png)  
👉**三、Python视频合集**

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。  
![img](https://img-blog.csdnimg.cn/31066dd7f1d245159f21623d9efafa68.png)

👉 **四、实战案例**

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。**(文末领读者福利)**  
![img](https://img-blog.csdnimg.cn/e78afb3dcb8e4da3bae5b6ffb9c07ec7.png)

👉**五、Python练习题**

检查学习结果。  
![img](https://img-blog.csdnimg.cn/280da06969e54cf180f4904270636b8e.png)

👉**六、面试资料**

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。  
![img](https://img-blog.csdnimg.cn/a9d7c35e6919437a988883d84dcc5e58.png)

![img](https://img-blog.csdnimg.cn/5db8141418d544d3a8e9da4805b1a3f9.png)

👉因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传




**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化学习资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618317507)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 23
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 OpenCV Python 中,可以使用以下函数实现图像旋转翻转平移,以及图像增强: 1. 图像旋转:使用 cv2.warpAffine 函数,该函数可以将图像按照指定的角度进行旋转。具体实现步骤如下: - 定义旋转矩阵:使用 cv2.getRotationMatrix2D 函数定义旋转矩阵,需要指定旋转中心、旋转角度和缩放比例。 - 应用旋转矩阵:使用 cv2.warpAffine 函数将旋转矩阵应用到图像中。 代码示例: ``` import cv2 import numpy as np img = cv2.imread('image.jpg') rows, cols = img.shape[:2] # 定义旋转矩阵 M = cv2.getRotationMatrix2D((cols/2, rows/2), 45, 1) # 应用旋转矩阵 rotated_img = cv2.warpAffine(img, M, (cols, rows)) cv2.imshow('Rotated Image', rotated_img) cv2.waitKey(0) cv2.destroyAllWindows() ``` 2. 图像翻转:使用 cv2.flip 函数,该函数可以将图像水平或垂直翻转。具体实现步骤如下: - 指定翻转方向:使用 cv2.flip 函数指定翻转方向,可以是水平翻转、垂直翻转或同时进行两翻转。 代码示例: ``` import cv2 img = cv2.imread('image.jpg') # 水平翻转 flipped_img = cv2.flip(img, 1) cv2.imshow('Flipped Image', flipped_img) cv2.waitKey(0) cv2.destroyAllWindows() ``` 3. 图像平移:使用 cv2.warpAffine 函数,该函数可以将图像按照指定的平移距离进行平移。具体实现步骤如下: - 定义平移矩阵:使用 np.float32 函数定义平移矩阵,需要指定平移距离。 - 应用平移矩阵:使用 cv2.warpAffine 函数将平移矩阵应用到图像中。 代码示例: ``` import cv2 import numpy as np img = cv2.imread('image.jpg') rows, cols = img.shape[:2] # 定义平移矩阵 M = np.float32([[1, 0, 100], [0, 1, 50]]) # 应用平移矩阵 translated_img = cv2.warpAffine(img, M, (cols, rows)) cv2.imshow('Translated Image', translated_img) cv2.waitKey(0) cv2.destroyAllWindows() ``` 4. 图像增强:可以使用一些图像处理技术,如直方图均衡化、滤波、二值化等技术来增强图像。具体实现步骤根据不同的技术而有所不同。这里以直方图均衡化为例,代码示例如下: ``` import cv2 img = cv2.imread('image.jpg', 0) # 直方图均衡化 equalized_img = cv2.equalizeHist(img) cv2.imshow('Equalized Image', equalized_img) cv2.waitKey(0) cv2.destroyAllWindows() ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值