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

在线图片制作生成重庆seo技术教程

在线图片制作生成,重庆seo技术教程,动态网站开发毕业论文,青海做网站的公司一.边缘填充 一般来图片操作之后会有空区域,就是对空出来的区域进行了像素值的填充,(0,0,0)也就是黑色像素值的填充。 # 默认黑色填充 import cv2 as cvimg cv.imread(../images/lena.png) # 先让原图旋转45度 M cv.getRotatio…

一.边缘填充

        一般来图片操作之后会有空区域,就是对空出来的区域进行了像素值的填充,(0,0,0)也就是黑色像素值的填充。

# 默认黑色填充
import cv2 as cvimg = cv.imread('../images/lena.png')
# 先让原图旋转45度
M = cv.getRotationMatrix2D((img.shape[1]/2,img.shape[0]/2),45,0.5)f = cv.warpAffine(img,M,(img.shape[1],img.shape[0]))
cv.imshow('img',img)
cv.imshow('f',f)
cv.waitKey()
cv.destroyAllWindows()

1.1 边界复制

cv.BORDER_REPLICATE

其是warpAffine函数中borderMode参数其一,且边缘填充时必须声明borderMode参数

就是将缩放后图像的边缘元素复制给离它最近的空区域。

import cv2 as cvimg = cv.imread('../images/lena.png')
# 先让原图旋转45度
M = cv.getRotationMatrix2D((img.shape[1]/2,img.shape[0]/2),45,0.5)f = cv.warpAffine(img,M,(img.shape[1],img.shape[0]),borderMode=cv.BORDER_REPLICATE)
cv.imshow('img',img)
cv.imshow('f',f)
cv.waitKey()
cv.destroyAllWindows()

1.2 边界反射

cv.BORDER_REFLECT

根据原图的边缘进行反射。

就是取镜像翻转,对角的地方就按点翻转,其他地方按边。

import cv2 as cvimg = cv.imread('../images/lena.png')
# 先让原图旋转45度
M = cv.getRotationMatrix2D((img.shape[1]/2,img.shape[0]/2),45,0.5)f = cv.warpAffine(img,M,(img.shape[1],img.shape[0]),borderMode=cv.BORDER_REFLECT)
cv.imshow('img',img)
cv.imshow('f',f)
cv.waitKey()
cv.destroyAllWindows()

1.3 边界反射101

cv.BORDER_REFLECT_101

与边界反射不同的是,不再反射边缘的像素点:

1.4 边界常数

cv.BORDER_CONSTANT

指定常数值borderValue = (x,y,z)是多少,默认的填充常数值为0

import cv2 as cvimg = cv.imread('../images/lena.png')
# 先让原图旋转45度
M = cv.getRotationMatrix2D((img.shape[1]/2,img.shape[0]/2),45,0.5)f = cv.warpAffine(img,M,(img.shape[1],img.shape[0]),borderMode=cv.BORDER_CONSTANT,borderValue=(0,0,255))
cv.imshow('img',img)
cv.imshow('f',f)
cv.waitKey()
cv.destroyAllWindows()

1.5 边界包裹

cv.BORDER_WRAP

就是把图像一对一复制平移

import cv2 as cvimg = cv.imread('../images/lena.png')
# 先让原图旋转45度
M = cv.getRotationMatrix2D((img.shape[1]/2,img.shape[0]/2),45,0.5)f = cv.warpAffine(img,M,(img.shape[1],img.shape[0]),borderMode=cv.BORDER_WRAP)
cv.imshow('img',img)
cv.imshow('f',f)
cv.waitKey()
cv.destroyAllWindows()

二.图像矫正(透视变换)

        其原理是透视变换,有点像仿射变换,公式不太一样,它已经不是一个线性变换。通俗的讲,透视变换的作用其实就是改变一下图像里的目标物体的被观察的视角

可以看到,这是一个3*3的矩阵了,因为是将3维图像转为2维。

2.1 透视变换矩阵

M=getPerspectiveTransform(src,dst)

- src:原图像上需要进行透视变化的区域(四个点的坐标),一个二维数组

- dst:输出图像的四个新坐标(在原图中),一个二维数组。

那么怎么获取这8个坐标呢?介绍一个简单的方法,打开电脑中的画图软件:

        如图,把鼠标移到区域边缘上的四个点上就可以得到 w,h 的值。新坐标一般用原图边缘的坐标,直接可以用shape[0]shape[1]来获取 h,w,然后根据坐标系推算就有了。

2.2 透视变换函数

cv2.warpPerspective(src, M, dsize, flags, borderMode)

- src:输入图像。

- M:透视变换矩阵。

- dsize:输出图像的大小。它可以是一个Size对象,也可以是一个二元组。

- flags:插值方法的标记。

- borderMode:边界填充的模式。

import cv2 as cv
import numpy as np img = cv.imread('../images/3.png')
print(img.shape)# 这里拿到区域4点坐标分别为:左上182,113 右上500,151左下133.264右下490,308
# 由于图像中数据的类型为float32,所以得用np.float32创建数组
pts1 = np.float32([[182,113], [500,151],[133,264],[490,308]])
pts2 = np.float32([[0,0], [img.shape[1],0],[0, img.shape[0]],[img.shape[1], img.shape[0]]])# 来在我要透视变换的区域画个矩形(4条边)
# 这里用astype转为int是为了防止坐标值溢出
cv.line(img, pts1[0].astype(np.int64), pts1[1].astype(np.int64), (0, 255, 0), 2)
cv.line(img, pts1[1].astype(np.int64), pts1[3].astype(np.int64), (0, 255, 0), 2)
cv.line(img, pts1[2].astype(np.int64), pts1[3].astype(np.int64), (0, 255, 0), 2)
cv.line(img, pts1[2].astype(np.int64), pts1[0].astype(np.int64), (0, 255, 0), 2)# 拿到透视变换矩阵
M = cv.getPerspectiveTransform(pts1, pts2)# 进行透视变换后的图
ts_img = cv.warpPerspective(img, M, (img.shape[1], img.shape[0]))cv.imshow('img', img)
cv.imshow('ts_img', ts_img)
cv.waitKey(0)
cv.destroyAllWindows()

(477, 678, 3)

三.图像色彩空间转换

        OpenCV中,图像色彩空间转换是一个非常基础且重要的操作,就是将图像从一种颜色表示形式转换为另一种表示形式的过程。常见的颜色空间包括 RGB、HSV、YUV 等。

3.1 RGB颜色空间

        RGB颜色空间可以产生大约1600万种颜色,几乎包括了世界上的所有颜色,也就是说可以使用RGB颜色空间来生成任意一种颜色。

3.2 颜色加法

        使用OpenCVcv.add()函数把两幅图像相加,或者可以简单地通过numpy操作添加两个图像,如res = img1 + img2。

- OpenCV的加法是饱和操作(单纯数值相加,最大255),而Numpy添加是模运算

import cv2 as cv
import numpy as nppig = cv.imread('../images/pig.png')
cao = cv.imread('../images/cao.png')# add()
pig_cao_add = cv.add(pig, cao)# np
pig_cao_np = pig + caocv.imshow('pig_cao_add', pig_cao_add)
cv.imshow('pig_cao_np', pig_cao_np)
cv.waitKey(0)
cv.destroyAllWindows()

3.3 颜色加权加法

cv2.addWeighted(src1,alpha,src2,deta,gamma)

- alphabeta:两张图象权重。

- gamma:亮度调整值。

  > 0,图像会变亮

  < 0,图像会变暗。

  0,则没有额外的亮度调整。

import cv2 as cv
import numpy as nppig = cv.imread('../images/pig.png')
cao = cv.imread('../images/cao.png')su = cv.addWeighted(pig, 0.7, cao, 0.3, 0)
cv.imshow('su',su)
cv.waitKey()
cv.destroyAllWindows()

http://www.cadmedia.cn/news/11672.html

相关文章:

  • 免费新闻网站建设淘宝搜索关键词排名查询工具
  • 公司网站建设吧个好电脑网络优化软件
  • 自己在百度上可以做网站吗友情链接的英文
  • 森动网网站建设好吗百度平台联系方式
  • 安庆网站建设为百度的总部在哪里
  • 西安直播网站建设上海网络推广软件
  • my8777网域名查询北京中文seo
  • 英语可以做推广的亲子类网站东莞百度seo关键词优化
  • 以下选择哪一项是b2b平台seo网上培训多少钱
  • 郑州行业网站建设百度新闻官网首页
  • 备案期间网站能打开吗制作网站需要多少费用
  • 建站免费加盟百度网盘优化
  • 免费行情软件网站下载大全安全吗网上营销策略有哪些
  • 辽宁建设工程信息网二级建造师查询做seo是什么意思
  • 南通网站推广优化费用百度竞价什么时候开始的
  • 电商seo是指宁波seo超级外链工具
  • 网站快速优化排名雅虎搜索引擎
  • 网站建设结项报告济南seo
  • 铁路建设监理协会网站近期国家新闻
  • 学勇建站aso优化渠道
  • 北京城建设计集团网站如何进行线上推广
  • 建设银行网站首页网站建设策划书范文
  • 网站建设涉及和描述的一些问题好的营销网站设计公司
  • 如何建设好高校网站关键词搜索量全网查询
  • 有经验的唐山网站建设百度推广获客
  • 湖南省建设工程信息网站泉州百度推广咨询
  • 和县网站制作app渠道推广
  • 手机钓鱼网站免费制作软文推广怎么写
  • 电力建设集团网站合肥seo推广外包
  • 免费咨询服务合同范本seo关键词优化推广外包