图像的读取、缩放、平移、旋转、翻转、仿射、透射

  1 import cv2
  2 import numpy as np
  3 import matplotlib.pyplot as plt
  4
  5 # 在读取图片中,imread(‘图片地址’,‘模式参数’)函数可以来控制所读取图片的模式。
  6 # 模式参数:
  7 # 0:读入的为灰度图像(即使读入的为彩色图像也将转化为灰度图像)
  8 # 1:读入的为彩色图像(默认)
  9
 10 # img=cv2.imread(‘girl.jpg‘,0)
 11 # 数组
 12 # print(img)
 13 # 图片大小
 14 # print(np.shape(img))
 15
 16 # 先创建一个窗口
 17 # cv2.namedWindow(‘Image‘)
 18 # # 在窗口中显示图像
 19 # cv2.imshow(‘Image‘,img)
 20 # # 使窗口始终保持住
 21 # cv2.waitKey(0)
 22 #
 23 # # 复制图片
 24 # img1=img.copy()
 25 # 保存图像
 26 # cv2.imwrite(‘123.jpg‘,img1)
 27
 28 # 第一个参数是保存图像的地址以及文件的名字,第二个参数是所要保存的图像数组。
 29 # 其实它还有第三个参数,针对特定的图像格式,对于JPEG,其表示的是图片的quality,用0-100的整数表示,默认为95。
 30 # 当然,你如果把参数设置的超过100也不会出错,但到100已经达到图片本身的最高质量了。
 31 # cv2.IMWRITE_JPEG_QUALITY的类型为int类型,符合图像数组为整数的要求,不用再更改类型。
 32
 33 # cv2.imwrite(‘rose_copy1.jpg‘, img1, [cv2.IMWRITE_JPEG_QUALITY, 100])
 34 # # 释放窗口
 35 # cv2.destroyAllWindows()
 36
 37
 38
 39
 40
 41 # img = np.array([
 42 #     [[255, 0, 0], [0, 255, 0], [0, 0, 255]],
 43 #     [[255, 255, 0], [255, 0, 255], [0, 255, 255]],
 44 #     [[255, 255, 255], [128, 128, 128], [0, 0, 0]],
 45 # ], dtype=np.uint8)
 46
 47 # 对于常见的RGB彩色图像,opencv使用的是BGR格式,如下例:
 48 # 用matplotlib存储
 49 # plt.imsave(‘img_pyplot.png‘, img)
 50 # 用OpenCV存储
 51 # cv2.imwrite(‘img_cv2.png‘, img)
 52
 53
 54 img=cv2.imread(‘b.jpg‘)
 55 # print(img.shape)  #(333, 500, 3)
 56
 57 # 平移
 58 # M=np.float32([[1,0,100],
 59 #               [0,1,50]])
 60 # rows,cols=img.shape[:2]  #    333 500
 61 # translation=cv2.warpAffine(img,M,(cols,rows))   # 平移    cv2.warpAffine(要变换的图像,平移矩阵,变换后大小)
 62 # plt.subplot(121)
 63 # plt.imshow(img)
 64 # plt.subplot(122)
 65 # plt.imshow(translation)
 66 # plt.show()
 67
 68 # 缩放
 69 # 插值:interpolation   None本应该是放图像大小的位置的,后面设置了缩放比例,所以就不要了
 70 # res1 = cv2.resize(img,None,fx=2,fy=2,interpolation=cv2.INTER_CUBIC) # 缩放    cv2.resize(变换的图像,缩放后大小,缩放比例因子,插值方法)
 71 # #直接规定缩放大小,这个时候就不需要缩放因子
 72 # height,width = img.shape[:2]
 73 # res2 = cv2.resize(img,(2*width,2*height),interpolation=cv2.INTER_CUBIC)
 74 # plt.subplot(131)
 75 # plt.imshow(img)
 76 # plt.subplot(132)
 77 # plt.imshow(res1)
 78 # plt.subplot(133)
 79 # plt.imshow(res2)
 80 # plt.show()
 81
 82 # 旋转
 83 # rows, cols = img.shape[:2]
 84 # # cv2.getRotationMatrix2D(旋转中心,旋转角度,缩放比例)
 85 # M = cv2.getRotationMatrix2D((cols / 2, rows / 2), 45, 1/2)
 86 # # 第三个参数:变换后的图像大小
 87 # res = cv2.warpAffine(img, M, (cols, rows))   # 平移
 88 # plt.subplot(121)
 89 # plt.imshow(img)
 90 # plt.subplot(122)
 91 # plt.imshow(res)
 92 # plt.show()
 93
 94 # 翻转    cv2.flip(para) para=0:纵向翻转 para=1:横向翻转 para=-1:同时都翻
 95 # res1 = cv2.flip(img,1)
 96 # #纵向翻转
 97 # res2 = cv2.flip(img,0)
 98 # #同时翻转
 99 # res3 = cv2.flip(img,-1)
100 # plt.subplot(141)
101 # plt.imshow(img)
102 # plt.subplot(142)
103 # # para=1:横向翻转
104 # plt.imshow(res1)
105 # plt.subplot(143)
106 # # 翻转    cv2.flip(para) para=0:纵向翻转
107 # plt.imshow(res2)
108 # plt.subplot(144)
109 # # para=-1:同时都翻
110 # plt.imshow(res3)
111 # plt.show()
112
113 # 仿射(旋转并拉伸)    cv2.getAffineTransform(pos1,pos2)3个点前后位置  +  cv2.warpAffine(变换的图像,平移矩阵,变换后大小)
114 # rows,cols = img.shape[:2]
115 # pts1 = np.float32([[50,50],[200,50],[50,200]])
116 # pts2 = np.float32([[10,100],[200,50],[100,250]])
117 # M = cv2.getAffineTransform(pts1,pts2)
118 # #第三个参数:变换后的图像大小
119 # res = cv2.warpAffine(img,M,(cols,rows))
120 # plt.subplot(121)
121 # plt.imshow(img)
122 # plt.subplot(122)
123 # plt.imshow(res)
124 # plt.show()
125
126 # 透射    cv2.getPerspectiveTransform(pts1,pts2)4个点前后位置 + cv2.warpAffine()
127 # rows,cols = img.shape[:2]
128 # pts1 = np.float32([[56,65],[238,52],[28,237],[239,240]])
129 # pts2 = np.float32([[0,0],[200,0],[0,200],[200,200]])
130 # M = cv2.getPerspectiveTransform(pts1,pts2)
131 # res = cv2.warpPerspective(img,M,(200,150))
132 # plt.subplot(121)
133 # plt.imshow(img)
134 # plt.subplot(122)
135 # plt.imshow(res)
136 # plt.show()

原文地址:https://www.cnblogs.com/zpdbkshangshanluoshuo/p/10415986.html

时间: 2024-10-12 11:25:46

图像的读取、缩放、平移、旋转、翻转、仿射、透射的相关文章

C#图像剪裁、缩放、旋转、转化为鼠标光标

//======================================================= //图像剪裁.缩放,转化为鼠标光标 //======================================================= /// <summary> /// 从图像pic中截取区域Rect构建新的图像 /// </summary> public Bitmap GetRect(Image pic, Rectangle Rect) { //创

opencv 图像平移、缩放、旋转、翻转 图像仿射变换

图像几何变换 图像几何变换从原理上看主要包括两种:基于2x3矩阵的仿射变换(平移.缩放.旋转.翻转).基于3x3矩阵的透视变换. 图像平移 opencv实现图像平移 实现图像平移,我们需要定义下面这样一个矩阵,tx和ty分别是x和y方向上平移的距离: 图像平移利用仿射变换函数 cv.warpAffine() 实现 实验 # 图像平移 import numpy as np import cv2 as cv img = cv.imread('paojie.jpg') rows, cols = img

OpenCV2:图像的几何变换,平移、镜像、缩放、旋转(1)

图像的几何变换是在不改变图像内容的前提下对图像像素的进行空间几何变换,主要包括了图像的平移变换.镜像变换.缩放和旋转等.本文首先介绍了图像几何变换的一些基本概念,然后再OpenCV2下实现了图像的平移变换.镜像变换.缩放以及旋转,最后介绍几何的组合变换(平移+缩放+旋转). 1.几何变换的基本概念 1.1 坐标映射关系 图像的几何变换改变了像素的空间位置,建立一种原图像像素与变换后图像像素之间的映射关系,通过这种映射关系能够实现下面两种计算: 原图像任意像素计算该像素在变换后图像的坐标位置 变换

OpenCV2:图像的几何变换,平移、镜像、缩放、旋转(2)

在OpenCV2:图像的几何变换,平移.镜像.缩放.旋转(1)主要介绍了图像变换中的向前映射.向后映射.处理变换过程中浮点坐标像素值的插值算法,并且基于OpenCV2实现了两个简单的几何变换:平移和镜像变换.本文主要稍微复杂点的两个几何变换:缩放和旋转. 1.图像缩放 图像的缩放主要用于改变图像的大小,缩放后图像的图像的宽度和高度会发生变化.水平缩放系数,控制图像宽度的缩放,其值为1,则图像的宽度不变:垂直缩放系数控制图像高度的缩放,其值为1,则图像的高度不变.如果水平缩放系数和垂直缩放系数不相

iOS 开发----CGAffineTransform平移,旋转,缩放

在做平移,旋转,缩放的时候一定要记住三个步骤: 获取值(获取当前控件的 transform 属性值) 修改值(修改需要设置的 transform 属性值) 赋值   (将修改的 transform 属性的值赋给原来的值) /**   *  平移   *   *  @param transform 获取当前的形变 transform   *  @param tx        沿着 x 水平方向的平移   *  @param ty        沿着 y 垂直方向的平移   *   *  @ret

[Android] 使用Matrix矩阵类对图像进行缩放、旋转、对比度、亮度处理

    前一篇文章讲述了Android拍照.截图.保存并显示在ImageView控件中,该篇文章继续讲述Android图像处理技术,主要操作包括:通过打开相册里的图片,使用Matrix对图像进行缩放.旋转.移动.对比度.亮度.饱和度操作,希望对大家有所帮助. 一. 显示打开图片     首先,设置activity_main.xml布局如下所示: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android

Android单点触控技术,对图片进行平移,缩放,旋转操作

相信大家使用多点对图片进行缩放,平移的操作很熟悉了,大部分大图的浏览都具有此功能,有些app还可以对图片进行旋转操作,QQ的大图浏览就可以对图片进行旋转操作,大家都知道对图片进行缩放,平移,旋转等操作可以使用Matrix来实现,Matrix就是一个3X3的矩阵,对图片的处理可分为四个基础变换操作,Translate(平移变换).Rotate(旋转变换.Scale (缩放变换).Skew(错切变换),如果大家对Matrix不太了解的话可以看看这篇文章(点击查看),作者对每一种Matrix的变换写的

【安卓】自定义基于onDraw的任意动画(不仅仅是平移/旋转/缩放/alpha)、!

思路: 1.基于时间的显示映射.如:给定度数,显示圆弧,加上时序,即可有圆弧动画的效果 2.给定时序.用于驱动动画的一帧帧绘制 方案一.基于ObjectAnimator.动画运作时会调用degree对应set函数(基于放射调用),即setDegree. ObjectAnimator ani=ObjectAnimator.ofInt(myView, "degree", 0,300); ani.start(); 注:1>混编后,默认会将setDegree混掉,导致找不到函数,故混编后

Android 中实现图片平移、缩放、旋转同步进行

前言 之前因为项目需求,其中使用到了图片的单击显示取消,图片平移缩放功能,昨天突然想再加上图片的旋转功能,在网上看了很多相关的例子,可是没看到能同时实现我想要的功能的. 需求:(1)图片平移.缩放.旋转等一系列操作后,图片需要自动居中显示.(2)图片旋转后选自动水平显示或者垂直显示(3)图片在放大缩小的同时都能旋转 Demo实现部分效果截图 Demo主要代码 Java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 2

osg中使用MatrixTransform来实现模型的平移/旋转/缩放

osg中使用MatrixTransform来实现模型的平移/旋转/缩放 转自:http://www.cnblogs.com/kekec/archive/2011/08/15/2139893.html#undefined MatrixTransform是从Transform - Group继承而来,因此可以在它的下面挂接Node对象. 通过设置其矩阵,来实现其下子节点的模型变换. -- 用局部坐标系来理解(局部坐标系又称惯性坐标系,其与模型的相对位置在变换的过程中始终不变) 如下代码: // 创建