0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

详解OpenCV入门知识图片预处理

新机器视觉 ? 来源:QbitAI ? 作者:量子位 ? 2021-04-14 14:46 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

OpenCV是一个跨平台计算机视觉机器学习算法库。它不仅能用来实现各种复杂的算法,还能够对图像进行预处理:包括图像的平移、旋转、缩放、翻转、裁剪。希望把这些知识分享给初学者。

图像平移

我们使用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速查表,感兴趣的朋友可以通过下方链接查看。
编辑:lyn

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • OpenCV
    +关注

    关注

    32

    文章

    643

    浏览量

    43109
  • 图像平移
    +关注

    关注

    0

    文章

    2

    浏览量

    5471

原文标题:【OpenCV入门】手把手教你图片预处理

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    家电电路识图自学手册

    家电电路识图自学手册
    发表于 07-11 15:49 ?3次下载

    轻轻松松学电工(识图篇)

    内容介绍 结合广大电工人员的实际需要,主要介绍了常用电工电路识图的基础知识、方法及技巧,内容包括常用电气符号、电工识图基本方法,以及识读供配电系统图、建筑电气图、电力拖动系统电气图、PLC梯形图
    发表于 04-30 17:18

    典型电路原理、电路识图入门到精通等资料

    1、电路识图入门到精通高清电子资料 由浅入深地介绍了电路图的基础知识、典型单元电路的识图方法,通过“入门篇”和“精通篇”循序渐进、由浅入深
    的头像 发表于 04-15 15:53 ?8387次阅读
    典型电路原理、电路<b class='flag-5'>识图</b>从<b class='flag-5'>入门</b>到精通等资料

    每周推荐!电子工程师必学!典型电路原理、电路识图入门到精通等资料

    1、 电路识图入门到精通高清电子资料 由浅入深地介绍了电路图的基础知识、典型单元电路的识图方法,通过“入门篇”和“精通篇”循序渐进、由浅入
    发表于 04-11 15:17

    电路识图入门到精通高清电子资料

    由浅入深地介绍了电路图的基础知识、典型单元电路的识图方法,通过“入门篇”和“精通篇”循序渐进、由浅入深地介绍了电路图的基础知识、典型单元电路的识图
    发表于 04-10 16:22

    FPGA Verilog HDL语法之编译预处理

    Verilog HDL语言和C语言一样也提供了编译预处理的功能。“编译预处理”是Verilog HDL编译系统的一个组成部分。Verilog HDL语言允许在程序中使用几种特殊的命令(它们不是一般
    的头像 发表于 03-27 13:30 ?665次阅读
    FPGA Verilog HDL语法之编译<b class='flag-5'>预处理</b>

    如何确定在OpenVINO? Toolkit中预处理支持的输入颜色格式?

    无法确定在 OpenVINO? Toolkit 中预处理支持的输入颜色格式。
    发表于 03-06 07:28

    使用Python+OpenCV处理图片

    如果给你一张图片作为背景,另外一张图片中的物体作为前景图,要把前景图中的物体叠加布置到背景图的中间位置,并且前景图中的物体需要在背景图中有旋转和投影,怎么处理?
    的头像 发表于 12-23 15:54 ?883次阅读

    RK3568 + OpenCV 会碰撞出什么火花?案例详解:2-1 基于OpenCV的画线实验

    一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。 OpenCV具有以下特点: 不管是科学研究,还是商业
    发表于 12-03 14:09

    Minitab 数据清理与预处理技巧

    Minitab是一款功能强大的统计分析和质量管理软件,在数据分析过程中,数据清理与预处理是至关重要的环节。以下是一些在Minitab中进行数据清理与预处理的技巧: 一、数据导入与格式调整 导入数据
    的头像 发表于 12-02 16:06 ?1655次阅读

    如何用OpenCV的相机捕捉视频进行人脸检测--基于米尔NXP i.MX93开发板

    功能,首先要进行人脸检测,判断出图片中人脸的位置,才能进行下一步的操作。 OpenCV人脸检测方法 在OpenCV中主要使用了两种特征(即两种方法)进行人脸检测,Haar特征和LBP特征。用得最多
    发表于 11-15 17:58

    三星自主研发知识图谱技术,强化Galaxy AI用户体验与数据安全

    据外媒11月7日报道,三星电子全球AI中心总监Kim Dae-hyun近日透露,公司正致力于自主研发知识图谱技术,旨在进一步优化Galaxy AI的功能,提升其易用性,并加强用户数据的隐私保护。
    的头像 发表于 11-07 15:19 ?1420次阅读

    基于ArkTS语言的OpenHarmony APP应用开发:图片处理

    1、程序介绍本案例使用TextArea实现多文本输入,使用mediaLibrary实现在相册中获取图片,使用image生成pixelMap,使用pixelMap的scale(),crop
    的头像 发表于 09-20 08:07 ?1369次阅读
    基于ArkTS语言的OpenHarmony APP应用开发:<b class='flag-5'>图片</b><b class='flag-5'>处理</b>

    C55x CSL音频预处理

    电子发烧友网站提供《C55x CSL音频预处理.pdf》资料免费下载
    发表于 09-19 11:30 ?0次下载
    C55x CSL音频<b class='flag-5'>预处理</b>

    16bit 6通道带信号预处理的高速模数转换器——AiP8348

    16bit 6通道带信号预处理的高速模数转换器——AiP8348
    的头像 发表于 08-26 09:59 ?781次阅读
    16bit 6通道带信号<b class='flag-5'>预处理</b>的高速模数转换器——AiP8348