点上方蓝字计算机视觉联盟获取更多干货

在右上方 ··· 设为星标 ★,与你不见不散

仅作学术分享,不代表本公众号立场,侵权联系删除

转载于:量子位

AI博士笔记系列推荐

周志华《机器学习》手推笔记正式开源!可打印版本附pdf下载链接

OpenCV是一个跨平台计算机视觉和机器学习算法库。

它不仅能用来实现各种复杂的算法,还能够对图像进行预处理:包括图像的平移、旋转、缩放、翻转、裁剪。

最近一位来自印度的小哥Raoof Naushad发布了一篇相关教程,希望把这些知识分享给初学者。

图像平移

我们使用OpenCV提供的仿射变换函数cv.warpAffine()沿x和y轴移动图像。

Step1. 调用一个函数cv.warpAffine()。

Step2. 创建一个平移矩阵,这一步需要借助NumPy进行。

Step3. 将img(需要变换的图像)、transMAT(平移矩阵)和Dimensions(维度)代入仿射变换函数cv.warpAffine(),输入x和y以确定平移多少。

向左、向上移动,则x、y设为负数,反之则为正数。

Step4. 采用cv.imshow()函数显示图像。

## Translation
def translation(img,x,y):tranMAT = np.float32([[1,0,x],[0,1,y]])dimensions = (img.shape[1],img.shape[0])return cv.warpAffine(img,transMAT,dimensions)
translated = translation(img,-100,100)
cv.imshow("Translated",translated)
cv.waitKey(0)

图像旋转

在OpenCV中旋转图像,可以将任何点用作旋转的中心,同样使用cv.warpAffine()函数以及和上面相同的参数。但是旋转矩阵与图像平移是不同的。

Step1. 创建一个旋转函数,定义图像img、旋转角度angle和旋转点rotPoint。

Step2. 利用cv.getRotationMatrix2D()(矩阵旋转与缩放)创建一个旋转矩阵rotMAT,其中包括旋转点、旋转角度和比例因子。如果不需要比例因子,则将其设为1.0。

Step3. 输入旋转角度、旋转点对应数值。(如不需要设置旋转点,则在Step1中设为空值None)

## Rotation
def rotate(img,angle,rotPoint=None):(height,width) = img,shape[:2]if rotPoint is None:rotPoint = (width//2,height//2)rotMAT = cv.getRotationMatrix2D(rotPoint,angle,1.0)dimension = (width,height)return cv.warpAffine(img,rotMat,dimension)rotated = rotated(img,20)
cv.imshow("Rotated",rotated)
cv.waitKey(0)

图片缩放

在OpenCV中需要用到函数cv.resize(img, (500, 500), interpolation=cv.INTER_LINEAR)。

根据缩小或放大图像的需要,参数指定插值方法可以选择cv.INTER_AREA(区域插值)、cv.INTER_CUBIC(三次样条插值)、cv.INTER_LINEAR(线性插值)。

如需放大图像,可以采用<> INTER_LINEAR(效率较高)或INTER_CUBIC(效率较低);
如需缩小图像,可以采用<> INTER_AREA。

## Resize
resized = cv.resize(img(500,500),interpolation=cv.INTER_LINEAR)
cv.imshow("resized",resized)
cv.waitKey(0)

图像翻转

使用OpenCV中的cv.flip()函数,该函数支持图像的翻转(垂直翻转、水平翻转,以及同时翻转均可)。

cv.flip(img,flipcode)翻转模式有三种:0为垂直翻转,1为水平翻转,-1 为两个方向同时翻转。

## Flipping
flipped = cv.flip(img,0)
cv.imshow("Flipped",flipped)
cv.waitKey(0)

图像裁剪

运用Cropped = image[a1:a2,b1:b2] 裁剪图像img得到一个矩形,高度从a1到a2,宽度从b1到b2。

## Cropping
cropped = img[100:200,100:200]
cv.imshow("Cropped",cropped)
cv.waitKey(0)

除此之外,OpenCV还能用于空间颜色转换、物体跟踪、图像分割、轮廓提取、结构分析、人脸识别等,功能十分强大。

Raoof Naushad不仅发布了这篇教程,还分享了用于基本和高级图像处理的OpenCV速查表,感兴趣的朋友可以通过下方链接查看。

原文链接:
https://medium.com/analytics-vidhya/image-transformations-opencv-2021-de3ca97373ed

Raoof Naushad的GitHub主页:
https://github.com/raoofnaushad

end

我是王博Kings,一名985AI博士,在Github上开源了机器学习、深度学习等一系列手推笔记,获得了不少同学的支持。

这是我的私人微信,还有少量坑位,可与相关学者研究人员交流学习 

目前开设有人工智能、机器学习、计算机视觉、自动驾驶(含SLAM)、Python、求职面经、综合交流群扫描添加CV联盟微信拉你进群,备注:CV联盟

王博Kings 的公众号,欢迎关注,干货多多

王博Kings的系列手推笔记(附高清PDF下载):

博士笔记 | 周志华《机器学习》手推笔记第一章思维导图

博士笔记 | 周志华《机器学习》手推笔记第二章“模型评估与选择”

博士笔记 | 周志华《机器学习》手推笔记第三章“线性模型”

博士笔记 | 周志华《机器学习》手推笔记第四章“决策树”

博士笔记 | 周志华《机器学习》手推笔记第五章“神经网络”

博士笔记 | 周志华《机器学习》手推笔记第六章支持向量机(上)

博士笔记 | 周志华《机器学习》手推笔记第六章支持向量机(下)

博士笔记 | 周志华《机器学习》手推笔记第七章贝叶斯分类(上)

博士笔记 | 周志华《机器学习》手推笔记第七章贝叶斯分类(下)

博士笔记 | 周志华《机器学习》手推笔记第八章集成学习(上)

博士笔记 | 周志华《机器学习》手推笔记第八章集成学习(下)

博士笔记 | 周志华《机器学习》手推笔记第九章聚类

博士笔记 | 周志华《机器学习》手推笔记第十章降维与度量学习

博士笔记 | 周志华《机器学习》手推笔记第十一章特征选择与稀疏学习

博士笔记 | 周志华《机器学习》手推笔记第十二章计算学习理论(上)

博士笔记 | 周志华《机器学习》手推笔记第十二章计算学习理论(下)

博士笔记 | 周志华《机器学习》手推笔记第十三章半监督学习

博士笔记 | 周志华《机器学习》手推笔记第十四章概率图模型

点个在看支持一下吧

收藏 | OpenCV新手入门预处理相关推荐

  1. OpenCV新手入门,如何用它平移缩放和旋转图片

    子豪 发自 凹非寺  量子位 报道 | 公众号 QbitAI OpenCV是一个跨平台计算机视觉和机器学习算法库. 它不仅能用来实现各种复杂的算法,还能够对图像进行预处理:包括图像的平移.旋转.缩放. ...

  2. Python+Opencv图像处理新手入门教程(四):视频内容的读取与导出

    一步一步来吧 上一节: Python+Opencv图像处理新手入门教程(三):阈值与二值化 1.Intro 今天这节我们主要看怎么利用opencv读取并处理视频中的内容. 2.VideoCapture ...

  3. Python+Opencv图像处理新手入门教程(三):阈值与二值化

    一步一步来吧 上一节: Python+Opencv图像处理新手入门教程(二):颜色空间转换,图像大小调整,灰度直方图 1.Intro 今天这节我们主要研究利用阈值处理图像.例如对于输入图像: 如何做一 ...

  4. Python+Opencv图像处理新手入门教程(二):颜色空间转换,图像大小调整,灰度直方图

    一步一步来吧 上一节:Python+Opencv图像处理新手入门教程(一):介绍,安装与起步 1.什么是图像 对于计算机而言,图像的本质是一个由像素点构成的矩阵. 例如我们用肉眼很容易分辨一辆汽车的后 ...

  5. Python+OpenCV人脸识别签到考勤系统(新手入门)

    Python+OpenCV人脸识别签到考勤系统(新手入门) 前言 项目效果图 项目需要的环境 编译器 辅助开发QT-designer 项目配置 代码部分 核心代码 项目目录结构 后记 正式版改进 项目 ...

  6. Opencv快速入门(C++版),新手向

    Opencv快速入门(C++版) 前言 1.图像的读取与显示 所使用的API接口: 代码演示: 2.图像色彩空间转换 所使用的API接口: 代码演示: 3.图像对象的创建与赋值 所使用的API接口: ...

  7. c++新手入门(不定时更新,已肝18500字)

    文章目录 Welcometothec++新手入门{\color{cyan}{\Bbb Welcome \;}} {\color{#52C410}\Bbb to\;} {\color{orange}\B ...

  8. 如何学习Linux / 新手入门

    如何学习Linux / 新手入门 一.从基础开始:常常有些朋友在Linux论坛问一些问题,不过,其中大多数的问题都是很基础的.例如:为什么我使用一个命令的时候,系统告诉我找不到该目录,我要如何限制使用 ...

  9. Android新手入门,怎样才是正确的学习方式

    对于android新手入门,遇到的学习瓶颈和困难是无限大的,新手入门,没有一个好学的学习方向,没有一个学习规划,更多的则是在百度上搜索,查阅相关资料,如果没有辅导,纯粹就是瞎摸索.百度上面搜索资料,更 ...

最新文章

  1. JSON与JavaScript的转换
  2. 如何提高软件可维护性
  3. mac 下 通过 brew 安装 MariaDB
  4. js 两个map合并为一个map_ArcGIS API for JS3.x教程二:构建第一个简单的程序
  5. css32D、3D、动画、过渡
  6. 开源社交系统ThinkSNS+和ThinkSNS V4区别在哪里
  7. DB2建立不记录日志的表
  8. 你知道defer的坑吗?
  9. 鼠标移动到曲线图上显示值
  10. java版本的在线OJ项目
  11. struts2拦截器实现登录限制
  12. 基于模型的约束排序,并探究OTUs对pH的响应特征——单峰or线性?
  13. Word中如何删除某一页的页眉,不影响其他页眉
  14. java疯狂龙卷风游戏_疯狂龙卷风游戏
  15. 计算机交叉专业考研方向,与理工科交叉的计算机专业考研方向有哪些?
  16. 什么是埋点?我们为什么需要埋点?(原作者:知乎 原志Growing)
  17. C++设计模式17:中介者模式
  18. 论文阅读笔记 | 三维目标检测——PointRCNN
  19. 计算机工程科学怎么翻译,汉英机器翻译中汉语篇章时间信息系统模型 - 计算机工程与科学.pdf...
  20. proteus教程——读写AT24C02

热门文章

  1. 计算机考研压分的学校,篡改分数,恶意压分...考研院校的骚操作大盘点!小心避坑!...
  2. 雷曼java_java入门(2)--数据类型
  3. linux下升级zookeeper
  4. Java银行类编程题
  5. python多任务_【python】多任务(1. 线程)
  6. 关闭加速渲染_“瀑布屏”旗舰 摩托罗拉Edge+渲染图曝光,Moto G8正式发布
  7. IdentityServer4专题之二:OpenID介绍
  8. UVA 12101 Prime Path (素数筛+BFS)
  9. 20165101刘天野 2017-2018-2 《Java程序设计》 结对编程练习_四则运算(第二周)
  10. Eclipse快捷键 10个最有用的快捷键---摘录