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

    关注

    29

    文章

    615

    浏览量

    40919
  • 图像平移
    +关注

    关注

    0

    文章

    2

    浏览量

    5378

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

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

收藏 人收藏

    评论

    相关推荐

    信号的预处理包括哪些环节

    信号预处理是信号处理的一个重要环节,它对信号进行一系列的操作,以便于后续的分析和处理。信号预处理的目的是提高信号的质量,减少噪声,保留有用的信息,以及满足后续
    的头像 发表于 06-03 10:35 533次阅读

    C语言中的预处理

    所有的预处理器命令都是以井号(#)开头。它必须是第一个非空字符,为了增强可读性,预处理器指令应从第一列开始。
    发表于 03-01 12:16 419次阅读
    C语言中的<b class='flag-5'>预处理</b>器

    利用知识图谱与Llama-Index技术构建大模型驱动的RAG系统(下)

    对于语言模型(LLM)幻觉,知识图谱被证明优于向量数据库。知识图谱提供更准确、多样化、有趣、逻辑和一致的信息,减少了LLM中出现幻觉的可能性。
    的头像 发表于 02-22 14:13 648次阅读
    利用<b class='flag-5'>知识图</b>谱与Llama-Index技术构建大模型驱动的RAG系统(下)

    知识图谱基础知识应用和学术前沿趋势

    知识图谱(Knowledge Graph)以结构化的形式描述客观世界中概念、实体及其关系。是融合了认知计算、知识表示与推理、信息检索与抽取、自然语言处理、Web技术、机器学习与大数据挖掘等等方向的交叉学科。人工智能是以传统符号派
    的头像 发表于 01-08 10:57 563次阅读
    <b class='flag-5'>知识图</b>谱基础<b class='flag-5'>知识</b>应用和学术前沿趋势

    C语言有哪些预处理操作?

    C语言的预处理是在编译之前对源代码进行处理的阶段,它主要由预处理器完成。预处理器是一个独立的程序,它负责对源代码进行一些文本替换和处理,生成
    的头像 发表于 12-08 15:40 374次阅读
    C语言有哪些<b class='flag-5'>预处理</b>操作?

    C语言必备知识编译预处理

    编译预处理就是在编译源代码之前进行的一系列处理,将源程序中的一些特殊命令进行展开或处理,生成扩展的源代码。这些特殊命令通常以“#”开头,占单独的行,语句尾部不需要加分号。
    的头像 发表于 12-01 18:27 863次阅读
    C语言必备<b class='flag-5'>知识</b>编译<b class='flag-5'>预处理</b>

    基于OpenVINO+OpenCV的OCR处理流程化实现

    预处理主要是基于OpenCV、场景文字检测与识别基于OpenVINO框架 + PaddleOCR模型完成。直接按图索骥即可得到最终结果。 OpenCV预处理主要是完成偏斜矫正、背景矫正
    的头像 发表于 11-07 11:21 508次阅读
    基于OpenVINO+<b class='flag-5'>OpenCV</b>的OCR<b class='flag-5'>处理</b>流程化实现

    知识图谱与大模型结合方法概述

    本文作者 |  黄巍 《Unifying Large Language Models and Knowledge Graphs: A Roadmap》总结了大语言模型和知识图谱融合的三种路线:1
    的头像 发表于 10-29 15:50 730次阅读
    <b class='flag-5'>知识图</b>谱与大模型结合方法概述

    OpenCV基础知识入门

    OpenCV是计算机视觉中最受欢迎的库,最初由intel使用C和C ++进行开发的,现在也可以在python中使用。该库是一个跨平台的开源库,是免费使用的。OpenCV库是一个高度优化的库,主要关注实时应用程序。
    的头像 发表于 10-29 11:29 540次阅读
    <b class='flag-5'>OpenCV</b>基础<b class='flag-5'>知识</b><b class='flag-5'>入门</b>

    OpenCV 如何加载图片

    实现一遍。 OpenCV 的内容挺多的,而且不使用的话,容易忘记,所以通过制造工具的方式来给自己加深印象,平常要处理图片的时候,就可以用自己的工具直接处理,不需要每次都去重复的写代码。
    的头像 发表于 10-09 15:01 526次阅读

    图像预处理方法研究

    图像预处理的主要目的是消除图像中无关的信息,恢复有用的真实信息,增强有关信息的可检测性、最大限度地简化数据,从而改进特征提取、图像分割、匹配和识别的可靠性。一般的预处理流程为:1灰度化->2几何变换->3图像增强
    发表于 09-20 09:35 317次阅读

    求助,OpenCV的imread接口读取进来的JPG图片尺寸问题

    OpenCV的imread接口读取进来的JPG图片尺寸问题
    发表于 09-19 07:52

    大型语言模型与知识图谱:机遇与挑战

    这对知识表示领域来说是一个巨大的步骤。长时间以来,人们关注的是明确的知识,例如嵌入在文本中的知识,有时也被称为非结构化数据,以及以结构化形式存在的知识,例如在数据库和
    的头像 发表于 08-24 14:50 511次阅读
    大型语言模型与<b class='flag-5'>知识图</b>谱:机遇与挑战

    机器学习为什么需要数据预处理

    数据预处理是准备原始数据并使其适合机器学习模型的过程。这是创建机器学习模型的第一步也是关键的一步。 创建机器学习项目时,我们并不总是遇到干净且格式化的数据。在对数据进行任何操作时,必须对其进行清理
    的头像 发表于 08-24 09:20 1365次阅读
    机器学习为什么需要数据<b class='flag-5'>预处理</b>

    无功补偿原理基础知识详解

    无功补偿原理基础知识详解
    的头像 发表于 08-11 09:48 610次阅读
    无功补偿原理基础<b class='flag-5'>知识</b><b class='flag-5'>详解</b>