当前位置: 首页 > wzjs >正文

莱芜房产网站广告联盟app推广

莱芜房产网站,广告联盟app推广,h5网站开发费用,网站的建设宗旨一.图像翻转 cv2.flip(img,flipcode) 参数 - flipcode : 指定翻转类型的标志&#xff0c;为0&#xff0c;表示沿x轴翻转&#xff0c;>0(默认1) 表示沿y轴翻转&#xff0c;为 <0(默认-1) 表示水平垂直翻转 OpenCV中&#xff0c;图片的镜像旋转以图像的中心为原点 impo…

一.图像翻转

cv2.flip(img,flipcode)

参数

  - flipcode :

指定翻转类型的标志,为0,表示沿x轴翻转,>0(默认1) 表示沿y轴翻转,为 <0(默认-1) 表示水平+垂直翻转 

OpenCV中,图片的镜像旋转以图像的中心为原点

import cv2 as cv# 请在脑海里下意识记住这个操作
img = cv.imread('../images/cat1.png')# 按镜像翻转
a = cv.flip(img, flipCode = -5)
cv.imshow('img', a)
cv.waitKey(0)
cv.destroyAllWindows()

二.图像仿射变换

仿射变换(Affine Transformation)是一种线性变换,保持了点之间的相对距离不变。

2.1 仿射变换的基本性质

  - 保持直线

  - 保持平行

  - 比例不变性

  - 不保持角度和长度

2.2 仿射变换的基本原理

- 线性变换

- 二维空间中,图像点坐标为(x,y),仿射变换的目标是将这些点映射到新的位置(x', y')

下面用一个表达式来帮助理解:

中间的2*3矩阵就是变换矩阵,其中abcd都是处理旋转、平移、缩放的系数,tx,ty是平移的系数

x' = x * a + y * b + tx

y' = x * c + y * d + ty

2.3 cv2.warpAffine(img,M,dsize)

- M :2x3的变换矩阵,类型为 np.float32

- dsize:输出图像的尺寸,形式为 (width,height)。

上述的旋转、平移等操作都需要这个函数实现,通过传入各种操作的变换矩阵,实现各种操作。

三.仿射变换操作

3.1 图像旋转

cv2.getRotationMatrix2D(center,angle,scale)

获取旋转矩阵,参数为:

- center:旋转中心点的坐标,格式为(x,y)。

- angle:旋转角度,单位为度,正值表示逆时针旋转负值表示顺时针旋转。

- scale:缩放比例,若设为1,则不缩放。

返回值是 M ,2x3的旋转矩阵。

import cv2 as cvimg = cv.imread('../images/cat1.png')# 获取旋转的变换矩阵
re = cv.getRotationMatrix2D((img.shape[1]/2, img.shape[0]/2),45,1)# 利用warpAffine进行旋转
img1 = cv.warpAffine(img, re, (img.shape[1], img.shape[0]))cv.imshow('img', img)
cv.imshow('img1', img1)
cv.waitKey(0)
cv.destroyAllWindows()

3.2 图像平移

        使用 np.float32() 创建数组,把这个二维数组(变化矩阵)作为参数传给 cv2.warpAffine() 函数就可以实现平移。

代入表达式可得

x' = x + tx

y' = y + ty

import cv2 as cv
import numpy as npimg = cv.imread('../images/cat1.png')# 定义偏移量
tx = 100
ty = 50# 定义平移变换矩阵
n = np.float32([[1,0,tx],[0,1,ty]])# 使用warpAffine函数实现平移变换
img_shift = cv.warpAffine(img,n,(img.shape[1],img.shape[0]))cv.imshow('img_shift',img_shift)
cv.waitKey(0)
cv.destroyAllWindows()

3.3 图像缩放

同理创建数组,下面是这个变换矩阵的理解:

代入表达式可得:

x' = x * sx

y' = y * sy

import cv2 as cv
import numpy as npimg = cv.imread('../images/cat1.png')# 定义缩放比例
sx = 0.5
sy = 0.5# 定义缩放变换矩阵
n = np.float32([[sx,0,0],[0,sy,0]])# 这里最后的输出大小适配缩放后的尺寸
img_scale = cv.warpAffine(img,n,(int(img.shape[1]*sx),int(img.shape[0]*sy)))cv.imshow('img_scale',img_scale)
cv.waitKey()
cv.destroyAllWindows()

3.4 图像剪切

        剪切操作可以改变图形的形状,以便其在某个方向上倾斜,它将对象的形状改变为斜边平行四边形,而不改变其面积。也就是一个矩形的宽高都是不变的。它把图片的一个部分切下来放在了另一个地方。

那怎么实现呢?

- 沿x轴剪切

x'=x+shy*y     

y'=y

- 沿y轴剪切

y'=shx*x+y

x'=x

        因为根据warpAffine函数的公式,想要在把图像的一块空间切下来放在另一个地方,不能操作txty,这样会使得整个图像的每个像素点发生平移,不会改变图像具体形状构造,这就是其与平移的区别。然后公式中,能让x,y增减值的只有用 shy 和 shx ,让点的另一个轴坐标乘以剪切因子来实现偏移。

x' = x+shy*y

        相当于给x方向上加y方向上的变化,这样就可以有一个矢量变化,方向就会变为斜向上或斜向下,从而实现拉扯。也就是所谓的x偏移,y不变;x不变,y偏移

import cv2 as cv
import numpy as npimg = cv.imread('../images/cat1.png')# 定义剪切因子(示例切y轴方向)
shx = 0.5
shy = 0# 定义剪切变换矩阵
n = np.float32([[1,shy,0],[shx,1,0]])img_warp = cv.warpAffine(img,n,(img.shape[1],img.shape[0]))cv.imshow('img_warp',img_warp)
cv.waitKey(0)
cv.destroyAllWindows()

http://www.dtcms.com/wzjs/171442.html

相关文章:

  • 有网站怎么做seo推广怎么营销一个产品
  • 免费查找资料的网站微营销推广平台有哪些
  • 深圳手机企业网站设计如何自创网站
  • wordpress博客登陆网站关键词优化外包
  • 网站建设新方向网店推广常用的方法
  • 外国网站上做雅思考试seo与sem的区别和联系
  • 重庆如何做聚政网站淘宝指数查询
  • 网站建设营销企业搜索引擎优化百度百科
  • 做类似美团的网站2023今日新闻头条
  • 教育培训机构怎么建设网站长沙网站se0推广优化公司
  • 网站上面的图片是怎么做的百度知道首页网
  • 电子商务网站的网站架构老鬼seo
  • 网站建设技术规范域名估价
  • 做程序开发的网站seo综合排名优化
  • 外贸导向企业网站惠州网站建设
  • 在深圳怎么进大公司网站推广软文范文800字
  • 外贸开发模板网站模板常见的网络营销方式
  • 政府建设网站武汉网络推广自然排名
  • 运城小程序开发公司搜索引擎优化策略包括
  • 网站建设的基本技术凌哥seo
  • 江西建设信息网站seo公司赚钱吗
  • 路由器当服务器做网站cpv广告联盟
  • 哪些网站可以做详情页网站域名ip地址查询
  • 编程项目实例网站百度指数的特点
  • 大连网站制作-中国互联爱站网工具
  • 搭建网页游戏seo实战培训
  • 网站模板但没有后台如何做网站怎么优化自己网站的关键词
  • 网站导航设计原则企业的网络推广
  • google网站质量chatgpt中文在线
  • 网站制作seo管理软件