opencv有基于c语言的教程吗_女朋友嫌你拍照黑洞?大兄弟莫慌,Python+OpenCV图像处理带你求生!...

?女王节一天下来,

各位小哥哥小姐姐们玩的可还开心?f421b9bc3d2707f3a28b3393b3444e0e.png

小天看新闻有专家建议说【将法定最低婚龄提前为男20岁女18岁】,单身的天?哭晕在厕所。。。为了提前响应祖国的号召,小天痛定思痛,决定好好攻克一下图像处理这门技术活,争取早日“脱单”,毕竟不是所有人都会用Python处理图像5905221f784b246d4d0f073bc8c723df.png

不管是女王、女汉子,还是可贤可甜的佛系少女,爱哭的软妹和性感的女神,总有迷人的时刻~有点求生欲的兄弟们,让我们手牵手?,一起学好图像处理?

感谢女王节教会我爱和成长

ca368a4f54b38cdefd2740fc5213c610.gif

9aee9977eba3d4d336e35b234e082621.gif

Python+OpenCV教程1:简介原装

Python+OpenCV教程2:基础元素-图片

Python+OpenCV教程3:打开摄像头

Python+OpenCV教程4:图像基本操作

Python+OpenCV教程5:颜色空间转换

Python+OpenCV教程6:阈值分割

图像几何变换

文章交代:

  • 图像几何变换——如何旋转、平移、缩放和翻转图片

推荐人群:

  • 初级入门、机器学习小白、技术爱好者

【图片可到文末?本节源码下载。】

0 1目标
  • 实现旋转、平移和缩放图片

  • OpenCV函数:cv2.resize(), cv2.flip(), cv2.warpAffine()

图像的几何变换从原理上看主要包括两种:基于2×3矩阵的仿射变换(平移、缩放、旋转和翻转等)、基于3×3矩阵的透视变换,感兴趣的小伙伴可参考番外篇:仿射变换与透视变换。

02缩放图片

缩放就是调整图片的大小,使用cv2.resize()函数实现缩放。可以按照比例缩放,也可以按照指定的大小缩放:

import cv2img = cv2.imread('drawing.jpg')# 按照指定的宽度、高度缩放图片res = cv2.resize(img, (132, 150))# 按照比例缩放,如x,y轴均放大一倍res2 = cv2.resize(img, None, fx=2, fy=2, interpolation=cv2.INTER_LINEAR)cv2.imshow('shrink', res), cv2.imshow('zoom', res2)cv2.waitKey(0)

我们也可以指定缩放方法interpolation,更专业点叫插值方法,默认是INTER_LINEAR,全部可以参考:InterpolationFlags( http://t.cn/EIkqFX6)

03翻转图片

镜像翻转图片,可以用cv2.flip()函数:

dst = cv2.flip(img, 1)

其中,参数2 = 0:垂直翻转(沿x轴),参数2 > 0: 水平翻转(沿y轴),参数2 < 0: 水平垂直翻转。

4dc05143eb1991eadbfb99e696b196ae.png

0 4平移图片

要平移图片,我们需要定义下面这样一个矩阵,tx,ty是向x和y方向平移的距离:

92e29e3210a56735c8607c458696223c.png

平移是用仿射变换函数cv2.warpAffine()实现的:

# 平移图片import numpy as nprows, cols = img.shape[:2]# 定义平移矩阵,需要是numpy的float32类型# x轴平移100,y轴平移50M = np.float32([[1, 0, 100], [0, 1, 50]])# 用仿射变换实现平移dst = cv2.warpAffine(img, M, (cols, rows))cv2.imshow('shift', dst)cv2.waitKey(0)

d6b2c334a9e08db10a41d4df025f3e42.png

05旋转图片

旋转同平移一样,也是用仿射变换实现的,因此也需要定义一个变换矩阵。OpenCV直接提供了 cv2.getRotationMatrix2D()函数来生成这个矩阵,该函数有三个参数:

参数1:图片的旋转中心

参数2:旋转角度(正:逆时针,负:顺时针)

参数3:缩放比例,0.5表示缩小一半

# 45°旋转图片并缩小一半M = cv2.getRotationMatrix2D((cols / 2, rows / 2), 45, 0.5)dst = cv2.warpAffine(img, M, (cols, rows))cv2.imshow('rotation', dst)cv2.waitKey(0)

460305f67fa3c9dcc778df484d4094c1.png

06小结
  • cv2.resize()缩放图片,可以按指定大小缩放,也可以按比例缩放。

  • cv2.flip()翻转图片,可以指定水平/垂直/水平垂直翻转三种方式。

  • 平移/旋转是靠仿射变换cv2.warpAffine()实现的。

引用

  • 本节源码 http://t.cn/EIkxJOZ

  • Geometric Transformations of Images  http://t.cn/EIkxHbV

小天

诚邀

d53ce3ab2b385db275b1ead86d9ed40f.png

如果你也有想分享的干货,可以登录天池实验室(notebook),包括赛题的理解、数据分析及可视化、算法模型的分析以及一些核心的思路等内容。

小天会根据你分享内容的数量以及程度,给予丰富的神秘天池大礼以及粮票奖励。分享成功后你也可以通过下方钉钉群?主动联系我们的社区运营同学(钉钉号:doqclsn 或 yiwen1991)

b04d46b045ee54c98281e72d8b31f0ba.png

天池宝贝们有任何问题,可在戳“留言”评论或加入钉钉群留言,小天会认真倾听每一个你的建议!f421b9bc3d2707f3a28b3393b3444e0e.png

37fb296dd77b3a7c985d965126dc5918.gif 6f162c7b093610feb5fac5a3405242a1.png

听说戳了的人都?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值