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
    +关注

    关注

    33

    文章

    652

    浏览量

    45068
  • 图像平移
    +关注

    关注

    0

    文章

    2

    浏览量

    5534

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    青翼基于KU115FPGA 高性能数据预处理载板-PCIe信号处理板-FPGA载板

    PCIE702A-2 是一款基于 PCIE 总线架构的 KU115 FPGA 高性能 数据预处理平台,该平台具有 1 个 FMC+(HPC)接口,1 路 PCIe x8 主机接口,该平台采用
    的头像 发表于 03-17 19:00 1043次阅读
    青翼基于KU115FPGA 高性能数据<b class='flag-5'>预处理</b>载板-PCIe信号<b class='flag-5'>处理</b>板-FPGA载板

    1688拍立淘图片搜索API概述

    图片批量搜索。 数据维度:返回商品 ID、价格、销量、供应商资质等全维度信息。 2.请求地址:c0b.cc/R4rbK2 。 3.Python 调用建议 虽然无法提供完整代码,但调用流程通常包括: 图片预处理(压缩、格式转换)。
    的头像 发表于 12-17 14:56 465次阅读

    没有专利的opencv-python 版本

    费用于商业产品,仅需保留版权声明); 包含所有核心功能:图片读取/处理、视频读写、绘图、形态学操作、边缘检测(Canny)、阈值分割、轮廓检测等,满足 90%+ 开发场景; 适配 Python 3.13,安装
    发表于 12-13 12:37

    数据预处理软核加速模块设计

    数据拼接操作,其预处理模块结构框图如下图 模块最后得到的信号为ddr_q、ddr_clk和ddr_wrreq。ddr_q是并行128bits图像数据,ddr_clk是RAM的出口时钟,同时引出作为下一模块的数据时钟,ddr_wrreq置高时代表有效数据。
    发表于 10-29 08:09

    友思特方案 | FPGA 加持,友思特图像采集卡高速预处理助力视觉系统运行提速增效

    图像预处理是图像处理关键中间环节,通过优化传感器到主机的数据传输处理为后续减负。其算法依托硬件执行,搭载 FPGA 的友思特图像采集卡以高速运算和并行特性缩短处理时间、降低延迟并提升吞
    的头像 发表于 08-20 09:18 1640次阅读
    友思特方案 | FPGA 加持,友思特图像采集卡高速<b class='flag-5'>预处理</b>助力视觉系统运行提速增效

    零成本钢铁侠手套!树莓派+OpenCV 秒变手势遥控器!

    大家好,这是一个树莓派和OpenCV的连载专题。使用树莓派与OpenCV实现姿态估计和面部特征点追踪使用树莓派与OpenCV实现面部和运动追踪的云台系统使用树莓派和OpenCV实现手部
    的头像 发表于 08-16 16:16 1543次阅读
    零成本钢铁侠手套!树莓派+<b class='flag-5'>OpenCV</b> 秒变手势遥控器!

    如何使用树莓派与OpenCV实现面部和运动追踪的云台系统?

    大家好,这是一个树莓派和OpenCV的连载专题。使用树莓派与OpenCV实现姿态估计和面部特征点追踪使用树莓派与OpenCV实现面部和运动追踪的云台系统使用树莓派和OpenCV实现手部
    的头像 发表于 08-14 17:45 2338次阅读
    如何使用树莓派与<b class='flag-5'>OpenCV</b>实现面部和运动追踪的云台系统?

    如何使用树莓派+OpenCV实现姿态估计和面部特征点追踪?

    大家好,这是一个树莓派和OpenCV的连载专题。使用树莓派与OpenCV实现姿态估计和面部特征点追踪使用树莓派与OpenCV实现面部和运动追踪的云台系统使用树莓派和OpenCV实现手部
    的头像 发表于 08-13 17:44 1450次阅读
    如何使用树莓派+<b class='flag-5'>OpenCV</b>实现姿态估计和面部特征点追踪?

    FPGA 加持,友思特图像采集卡高速预处理助力视觉系统运行提速增效

    图像预处理是图像处理关键环节,可优化数据传输、减轻主机负担,其算法可在FPGA等硬件上执行。友思特FPGA图像采集卡凭借FPGA特性,能缩短处理时间、降低延迟,适用于高速接口及实时、大数据量场景,可完成多种
    的头像 发表于 08-13 17:41 1324次阅读
    FPGA 加持,友思特图像采集卡高速<b class='flag-5'>预处理</b>助力视觉系统运行提速增效

    锂电池制造 | 电芯预处理工艺的步骤详解

    及全生命周期运行的可靠性奠定基础,下文美能锂电将详解锂电池制造的电芯预处理工艺。电芯为什么要进行预处理?MillennialLithium电芯预处理图1.电芯间的
    的头像 发表于 08-11 14:53 2056次阅读
    锂电池制造 | 电芯<b class='flag-5'>预处理</b>工艺的步骤<b class='flag-5'>详解</b>

    【GM-3568JHF开发板免费体验】OpenCV开发环境安装和计数程序开发

    (\'img.png\',1) #====================图像预处理=========================== gray = cv2.cvtColor(img
    发表于 08-09 13:30

    DSP从入门到精通全集

    这是一本循序渐进介绍DSP的书籍,从DSP的入门知识介绍到DPS的硬件,接口,应用,从DSP的ADC/DAC到数字滤波器处理。本文除了对DSP的各种软硬件知识进行介绍后,还结合实际,接
    发表于 07-12 14:36

    家电电路识图自学手册

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

    【Milk-V Duo S 开发板免费体验】SDK编译、人脸检测、OpenCV测试

    OpenCV 常用的功能,如读写图片处理,矩阵操作等等,版本与上游同步,无第三方依赖。在绝大多数情况下,以 1/10 的体积替换官方 OpenCV,适合对体积有要求的嵌入式环境。
    发表于 07-11 13:48

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

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