OpenCV 06(图像的基本变换)

这篇具有很好参考价值的文章主要介绍了OpenCV 06(图像的基本变换)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、图像的基本变换

1.1 图像的放大与缩小

- resize(src, dsize, dst, fx, fy, interpolation)

  - src: 要缩放的图片
  - dsize: 缩放之后的图片大小, 元组和列表表示均可.
  - dst: 可选参数, 缩放之后的输出图片
  - fx, fy: x轴和y轴的缩放比, 即宽度和高度的缩放比.
  - interpolation: 插值算法, 主要有以下几种:
    - INTER_NEAREST, 邻近插值, 速度快, 效果差.
    - INTER_LINEAR, 双线性插值,  使用原图中的4个点进行插值. 默认.
    - INTER_CUBIC, 三次插值, 原图中的16个点.
    - INTER_AREA, 区域插值, 效果最好, 计算时间最长.

 import cv2
  import numpy as np
  
  #导入图片
  dog = cv2.imread('./dog.jpeg')
  
  # x,y放大一倍
  new_dog = cv2.resize(dog,dsize=(800, 800), interpolation=cv2.INTER_NEAREST)
  cv2.imshow('dog', new_dog)
  cv2.waitKey(0)
  cv2.destroyAllWindows()

1.2 图像的翻转

- flip(src, flipCode)
  - flipCode =0 表示上下翻转
  - flipCode >0 表示左右翻转
  - flipCode  <0 上下 + 左右

# 翻转
import cv2
import numpy as np

#导入图片
dog = cv2.imread('./dog.jpeg')

new_dog = cv2.flip(dog, flipCode=-1)
cv2.imshow('dog', new_dog)
cv2.waitKey(0)
cv2.destroyAllWindows()

1.3 图像的旋转

- rotate(img, rotateCode)
  - ROTATE_90_CLOCKWISE 90度顺时针
  - ROTATE_180 180度
  - ROTATE_90_COUNTERCLOCKWISE 90度逆时针

# 旋转
import cv2
import numpy as np

#导入图片
dog = cv2.imread('./dog.jpeg')

new_dog = cv2.rotate(dog, rotateCode=cv2.cv2.ROTATE_90_COUNTERCLOCKWISE)
cv2.imshow('dog', new_dog)
cv2.waitKey(0)
cv2.destroyAllWindows()

1.4 仿射变换之图像平移

- 仿射变换是图像旋转, 缩放, 平移的总称.具体的做法是通过一个矩阵和和原图片坐标进行计算, 得到新的坐标, 完成变换. 所以关键就是这个矩阵. 

- warpAffine(src, M, dsize, flags, mode, value)

- M:变换矩阵

- dsize: 输出图片大小

- flag: 与resize中的插值算法一致

- mode: 边界外推法标志

- value: 填充边界值

- 平移矩阵

OpenCV 06(图像的基本变换),opencv,人工智能,计算机视觉

 # 仿射变换之平移
  import cv2
  import numpy as np
  
  #导入图片
  dog = cv2.imread('./dog.jpeg')
  
  h, w, ch = dog.shape
  M = np.float32([[1, 0, 100], [0, 1, 0]])
  # 注意opencv中是先宽度, 再高度
  new = cv2.warpAffine(dog, M, (w, h))
  
  cv2.imshow('new', new)
  cv2.waitKey(0)
  cv2.destroyAllWindows()

OpenCV 06(图像的基本变换),opencv,人工智能,计算机视觉

1.5 仿射变换之获取变换矩阵

仿射变换的难点就是计算变换矩阵, OpenCV提供了计算变换矩阵的API

- getRotationMatrix2D(center, angle, scale)
  - center 中心点 , 以图片的哪个点作为旋转时的中心点.
  - angle 角度: 旋转的角度, 按照逆时针旋转.
  - scale 缩放比例: 想把图片进行什么样的缩放.

# 仿射变换之平移
import cv2
import numpy as np

#导入图片
dog = cv2.imread('./dog.jpeg')

h, w, ch = dog.shape
# M = np.float32([[1, 0, 100], [0, 1, 0]])

# 注意旋转的角度为逆时针.
# M = cv2.getRotationMatrix2D((100, 100), 15, 1.0)
# 以图像中心点旋转
M = cv2.getRotationMatrix2D((w/2, h/2), 15, 1.0)
# 注意opencv中是先宽度, 再高度
new = cv2.warpAffine(dog, M, (w, h))

cv2.imshow('new', new)
cv2.waitKey(0)
cv2.destroyAllWindows()

OpenCV 06(图像的基本变换),opencv,人工智能,计算机视觉

- getAffineTransform(src[], dst[]) 通过三点可以确定变换后的位置, 相当于解方程, 3个点对应三个方程, 能解出偏移的参数和旋转的角度.

  - src原目标的三个点
  - dst对应变换后的三个点

 # 通过三个点来确定M
  # 仿射变换之平移
  import cv2
  import numpy as np
  
  #导入图片
  dog = cv2.imread('./dog.jpeg')
  
  h, w, ch = dog.shape
  
  # 一般是横向和纵向的点, 所以一定会有2个点横坐标相同, 2个点纵坐标相同
  src = np.float32([[200, 100], [300, 100], [200, 300]])
  dst = np.float32([[100, 150], [360, 200], [280, 120]])
  M = cv2.getAffineTransform(src, dst)
  # 注意opencv中是先宽度, 再高度
  new = cv2.warpAffine(dog, M, (w, h))
  
  cv2.imshow('new', new)
  cv2.waitKey(0)
  cv2.destroyAllWindows()

OpenCV 06(图像的基本变换),opencv,人工智能,计算机视觉

1.6 透视变换

透视变换就是将一种坐标系变换成另一种坐标系. 简单来说可以把一张"斜"的图变"正".

- warpPerspective(img, M, dsize,....)

- 对于透视变换来说, M是一个3 * 3 的矩阵.

- getPerspectiveTransform(src, dst) 获取透视变换的变换矩阵, 需要4个点, 即图片的4个角. 

# 透视变换
  import cv2
  import numpy as np
  
  #导入图片
  img = cv2.imread('./123.png')
  print(img.shape)
  
  src = np.float32([[100, 1100], [2100, 1100], [0, 4000], [2500, 3900]])
  dst = np.float32([[0, 0], [2300, 0], [0, 3000], [2300, 3000]])
  M = cv2.getPerspectiveTransform(src, dst)
  
  new = cv2.warpPerspective(img, M, (2300, 3000))
  cv2.namedWindow('img', cv2.WINDOW_NORMAL)
  cv2.resizeWindow('img', 640, 480)
  
  cv2.namedWindow('new', cv2.WINDOW_NORMAL)
  cv2.resizeWindow('new', 640, 480)
  
  cv2.imshow('img', img)
  cv2.imshow('new', new)
  
  
  cv2.waitKey(0)
  cv2.destroyAllWindows()

OpenCV 06(图像的基本变换),opencv,人工智能,计算机视觉文章来源地址https://www.toymoban.com/news/detail-701224.html

到了这里,关于OpenCV 06(图像的基本变换)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 人工智能算法工程师面试题——之OpenCV必背汇总(四)

    在OpenCV中,图像融合通常指的是将两个或更多图像以某种方式组合在一起,以创建一个新的图像。这个过程可以用于多种目的,比如艺术效果、图像修复或信息增强。实现图像融合的一种常见方法是通过加权求和,也就是每个像素位置上将不同图像的像素值按照一定的权重相

    2024年02月21日
    浏览(48)
  • 2022《人工智能》_ch06

    题目 如图所示的地图着色问题共有多少个解?如果是四色有多少个解?如果只有两色呢? 三色 依据MCV对节点排序, SA NT Q NSW WA V T 1 ◯ bigcirc ◯ × times × × times × × times × × times × × times × ◯ bigcirc ◯ 2 ◯ bigcirc ◯ × times × ◯ bigcirc ◯ × times × × times × 3 ◯ bigc

    2023年04月19日
    浏览(32)
  • 【OpenCV • c++】图像几何变换 | 图像仿射变换

    🚀 个人简介:CSDN「 博客新星 」TOP 10 , C/C++ 领域新星创作者 💟 作    者: 锡兰_CC ❣️ 📝 专    栏: 【OpenCV • c++】计算机视觉 🌈 若有帮助,还请 关注➕点赞➕收藏 ,不行的话我再努努力💪💪💪

    2024年02月16日
    浏览(47)
  • 读十堂极简人工智能课笔记06_自然语言处理

    1.4.3.1. 能让真人腾出手来处理难度更大的咨询 2.1.3.1. 在研究儿童的语言能力发展后总结出来的理论 2.1.3.2. 儿童虽然能够学会流利地说话,但他们在学习过程里其实根本没有接收到足够的信息 2.1.3.2.1. 所谓的“刺激的贫乏” 2.1.3.3. 儿童能够发展语言技能的唯一途径是他们

    2024年02月19日
    浏览(56)
  • 【OpenCV实现图像:使用OpenCV进行图像处理之透视变换】

    透视变换(Perspective Transformation)是一种图像处理中常用的变换手段,它用于将图像从一个视角映射到另一个视角,常被称为投影映射。透视变换可以用于矫正图像中的透视畸变,使得图像中的物体在新的视平面上呈现更加规则的形状。 透视变换通常涉及到寻找图像中的特定

    2024年02月03日
    浏览(59)
  • [OpenCV学习笔记]Qt+OpenCV实现图像灰度反转、对数变换和伽马变换

    灰度反转是一种线性变换,是将某个范围的灰度值映射到另一个范围内,一般是通过灰度的对调,突出想要查看的灰度区间。 S = L − 1 − r ( r ⊂ [ 0 , L − 1 ] ) S = L -1-r (r subset [0,L-1]) S = L − 1 − r ( r ⊂ [ 0 , L − 1 ]) 比如在以下胸片图像中提取白色絮状形状,在黑色背景下看

    2024年04月13日
    浏览(48)
  • OpenCV(十一):图像仿射变换

    目录 1.图像仿射变换介绍  仿射变换: 仿射变换矩阵: 仿射变换公式: 2.仿射变换函数 仿射变换函数:warpAffine() 图像旋转:getRotationMatrix2D() 计算仿射变换矩阵:getAffineTransform()  3.demo 1.图像仿射变换介绍  仿射变换:        仿射变换是由平移、缩放、旋转、翻转和错切组

    2024年02月10日
    浏览(52)
  • (opencv)图像几何变换——平移

    图像的平移操作是将图像的所有像素坐标进行水平或垂直方向移动,也就是将所有像素点按照给定的偏移量在水平方向沿x轴、垂直方向上沿y轴移动。平移变换分为两种类型:图像大小变化与图像大小不变。第一种类型保证图像平移的完整信息,第二种图像导致原始图像的部

    2024年02月08日
    浏览(44)
  • OpenCV图像变换操作

    图像缩放: 按比例缩放: 图像翻转: 沿X轴翻转: 沿Y轴翻转: 同时沿X轴、Y轴翻转: 图像旋转:

    2024年01月23日
    浏览(29)
  • (opencv)图像几何变换——缩放

    图像缩放是指将图像的尺寸变小或变大的过程,也就是减少或增加源图像数据的像素个数。图像缩放一定程度上会造成信息的丢失,因此需要考虑适宜的方法进行操作。 下面介绍两种常用的图像缩放方法的原理及实现 1.基于等间隔提取图像缩放 等间隔提取图像缩放是通过对

    2024年02月16日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包