美文网首页
重映射互换、缩放

重映射互换、缩放

作者: 大龙10 | 来源:发表于2021-10-11 12:36 被阅读0次

《OpenCV轻松入门:面向Python》读书笔记
作者:李立宗
出版社:电子工业出版社
出版时间:2019-05

第5章 几何变换

5.5 重映射

5.5.5 绕x轴、y轴翻转

如果想让图像绕着x轴、y轴翻转,意味着在映射过程中:

  • x坐标轴的值以y轴为对称轴进行交换。
  • y坐标轴的值以x轴为对称轴进行交换。

反映在map1和map2上:

  • map1的值调整为“总列数-1-当前列号”。
  • map2的值调整为“总行数-1-当前行号”。

5.5.6 x轴、y轴互换

如果想让图像的x轴、y轴互换,意味着在映射过程中,对于任意一点,都需要将其x轴、y轴坐标互换。
反映在mapx和mapy上:

  • mapx的值调整为所在行的行号。
  • mapy的值调整为所在列的列号。

需要注意的是,如果行数和列数不一致,上述运算可能存在值无法映射的情况。默认情况下,无法完成映射的值会被处理为0。

5.5.7 图像缩放

上述介绍的映射都是直接完成的整数映射,处理起来比较方便。在处理更复杂的问题时,就需要对行、列值进行比较复杂的运算来实现。
缩小图像后,可以将图像固定在围绕其中心的某个区域。
例如,将其x轴、y轴设置为:

  • 在目标图像的x轴(0.25·x轴长度,0.75·x轴长度)区间内生成缩小图像;x轴其余区域的点取样自x轴上任意一点的值。
  • 在目标图像的y轴(0.25·y轴长度,0.75·y轴长度)区间内生成缩小图像;y轴其余区域的点取样自y轴上任意一点的值。
  • 为了处理方便,我们让不在上述区域的点都取(0,0)坐标点的值。

3)程序

import cv2
import numpy as np
img=cv2.imread("lena.bmp")
rows,cols=img.shape[:2]
mapx = np.zeros(img.shape[:2],np.float32)
mapy = np.zeros(img.shape[:2],np.float32)
for i in range(rows):
    for j in range(cols):
            mapx.itemset((i,j),cols-1-j)
            mapy.itemset((i,j),rows-1-i)
rst1=cv2.remap(img,mapx,mapy,cv2.INTER_LINEAR)

mapx = np.zeros(img.shape[:2],np.float32)
mapy = np.zeros(img.shape[:2],np.float32)
for i in range(rows):
    for j in range(cols):
            mapx.itemset((i,j),i)
            mapy.itemset((i,j),j)
rst2=cv2.remap(img,mapx,mapy,cv2.INTER_LINEAR)

mapx = np.zeros(img.shape[:2],np.float32)
mapy = np.zeros(img.shape[:2],np.float32)
for i in range(rows):
    for j in range(cols):
        if 0.25*cols< i <0.75*cols and 0.25*rows< j <0.75*rows:
                mapx.itemset((i,j),2*( j - cols*0.25 ) + 0.5)
                mapy.itemset((i,j),2*( i - rows*0.25 ) + 0.5)
        else:     
                mapx.itemset((i,j),0)
                mapy.itemset((i,j),0)

rst3=cv2.remap(img,mapx,mapy,cv2.INTER_LINEAR)

cv2.imshow("original",img)
cv2.imshow("result1",rst1)
cv2.imshow("result2",rst2)
cv2.imshow("result3",rst3)

cv2.waitKey()
cv2.destroyAllWindows()

4)结果

相关文章

  • 重映射互换、缩放

    《OpenCV轻松入门:面向Python》读书笔记作者:李立宗出版社:电子工业出版社出版时间:2019-05 第5...

  • DrawHelper

    简单的写字,合成图,缩放,图片映射,图片变圆角

  • (三)注解、restful

    一 Requestmapping 映射多个 URI value 和 path 属性作用相同,可以互换。仅有一个属性...

  • 几何变换

    几何变换是指将一幅图像映射到另一副图像内的操作,根据映射关系的不同,有缩放、翻转、仿射变换、透视、重映射等。 1....

  • 动画

    Matrix 作用就是坐标映射,转成实际的坐标位置。基本变换有4种: 平移(translate)、缩放(scale...

  • 八:GLSL 动态滤镜

    默认 顶点着色器代码: 片元着色器代码: 缩放滤镜 原理:通过修改顶点着色器中的顶点和纹理的映射关系实现缩放。 算...

  • [iOS]竖向时间控制刻度条,支持双指缩放。

    原理:依赖scrollview的zoom功能来实现双指缩放,获取缩放参数,同时再对刻度进行重绘。 先上demo:h...

  • ★60.自定义控件 ★14.Matrix原理

    简介 Matrix 是一个矩阵,主要功能是坐标映射,数值转换。 基本变换 平移(translate) 缩放(sca...

  • imagesc

    功能:使用缩放颜色显示图像 语法 1、imagesc(C) 将C中数据映射为颜色。每个元素C指定一个像素颜色。得到...

  • ubuntu-键盘映射

    原文链接偶然间看到一篇文章,在Linux下互换Capslock和LCtrl(链接忘了),然后就有了重新映射一下功能...

网友评论

      本文标题:重映射互换、缩放

      本文链接:https://www.haomeiwen.com/subject/czrinltx.html