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

套模版做的网站好优化吗上海百度推广公司排名

套模版做的网站好优化吗,上海百度推广公司排名,教育机构招聘,wordpress 更改zh_CN.po【1】引言 前序学习过程中,掌握了灰度图像和彩色图像的掩模操作: python学opencv|读取图像(九)用numpy创建黑白相间灰度图_numpy生成全黑图片-CSDN博客 python学opencv|读取图像(四十)掩模:三…

【1】引言

前序学习过程中,掌握了灰度图像和彩色图像的掩模操作:

python学opencv|读取图像(九)用numpy创建黑白相间灰度图_numpy生成全黑图片-CSDN博客

python学opencv|读取图像(四十)掩模:三通道图像的局部覆盖-CSDN博客

也受此启发,尝试直接使用cv2.add()函数让两张图片进行叠加:

python学opencv|读取图像(四十一 )使用cv2.add()函数实现各个像素点BGR叠加-CSDN博客

在此基础上,我们如果进一步尝试,就可以对3张图片进行叠加。

比如,我们已经知晓彩色三通道图像的每一个通道都可以单独设置对应BGR值,它们叠加的效果是新的彩色图像。实际上,这种叠加效果我们早期在没有使用cv2.add()函数的时候,已经悄然获得了:

python学opencv|读取图像(十)用numpy创建彩色图像_cv2 通过numpy创建图像-CSDN博客

此时,在已经、学习了cv2.add()函数的基础上,我们可以进一步验证。

【2】可行性分析

【2.1】未使用cv.add()函数

在python学opencv|读取图像(十)用numpy创建彩色图像_cv2 通过numpy创建图像-CSDN博客文章中,使用的代码为:

import numpy as np  # 引入numpy模块
import cv2 as cv  # 引入cv2模块
from imageio.v2 import imwrite# 定义图像
t = np.arange(300, 600, 20)  # 定义变量,在[300,600)区间,每隔20取一个值
t_max = np.max(t)  # 取变量最大值作为像素大小
print('t_max=', t_max)  # 输出最大值
image = np.zeros([t_max, t_max, 3], np.uint8)  # 定义一个竖直和水平像素均为t_max的全0矩阵
image[:, :, 0] = 155  # 第一个通道值
image[:, :, 1] = 200  # 第二个通道值
image[:, :, 2] = 255  # 第三个通道值# 显示和保存定义的图像
cv.imshow('display-pho', image)  # 显示图像
cv.imwrite('gray-pho-3.png', image)  # 保存图像
cv.waitKey()  # 图像不关闭
cv.destroyAllWindows()  # 释放所有窗口

这其中的核心代码段,有一个逐层覆盖和叠加的效果:

image[:, :, 0] = 155  # 第一个通道值
image[:, :, 1] = 200  # 第二个通道值
image[:, :, 2] = 255  # 第三个通道值

【2.2】使用cv.add()函数

为验证使用add()函数的叠加效果,在上述代码后面补充一段代码:

image1 = np.zeros([t_max, t_max, 3], np.uint8)  # 定义一个竖直和水平像素均为t_max的全0矩阵
image1[:, :, 0] = 155  # 第一个图像
image2 = np.zeros([t_max, t_max, 3], np.uint8)  # 定义一个竖直和水平像素均为t_max的全0矩阵
image2[:, :, 1] = 200  # 第二个图像
image3 = np.zeros([t_max, t_max, 3], np.uint8)  # 定义一个竖直和水平像素均为t_max的全0矩阵
image3[:, :, 2] = 255  # 第三个图像
img=cv.add(image1,image2) # 第一和第二图像叠加
cv.imshow('display-12', img)  # 显示图像
cv.imwrite('gray-pho-12.png', img)  # 保存图像
img=cv.add(img,image3) # 第一、第二和第三图像叠加
cv.imshow('display-123', img)  # 显示图像
cv.imwrite('gray-pho-123.png', img)  # 保存图像

运行代码后,获得的图像为:

图1 gray-pho-3.png-未使用add()函数

图2 gray-pho-123.png-使用add()函数 

由图1和图2可见,无论是否使用add()函数,图像叠加的本质都是各个通道的BGR值对应相加,获得的图像效果是一样的。

此外,中间的过渡图像,也就是image1[:, :, 0] = 155和image1[:, :,1] = 200叠加后的图像为:

图3 gray-pho-12.png-使用add()函数

【2.3】使用cv.add()函数+掩模效果

在前述的两个测试中,使用的图像叠加都没有尝试掩模效果。

但add()函数本身允许添加一个mask参数来做掩模效果,为验证掩模效果,继续增加下述代码:

#验证掩模效果
mask=np.zeros((t_max, t_max,1),np.uint8)   # 定义一个竖直和水平像素均为t_max的全0矩阵
mask[20:300, 200:500, ] = 200  # 第二个图像
cv.imshow('display-mask', mask)  # 显示图像
cv.imwrite('gray-pho-mask.png',mask)  # 保存图像
img=cv.add(image1,image2,mask=mask) # 第一和第二图像叠加
cv.imshow('display-12-mask', img)  # 显示图像
cv.imwrite('gray-pho-12-mask.png', img)  # 保存图像

这里应用掩模效果的核心代码为:

img=cv.add(image1,image2,mask=mask) # 第一和第二图像叠加

代码运行后的掩模效果为:

图4 gray-pho-12-mask.png-使用add()函数

由图4可见,图像只在使用掩模的区域进行了效果叠加,其他区域仍然保留了全0矩阵对应的纯黑色画布特点。

因为刚好掩模的矩阵赋值也是200,和image2的通道赋值一样,为进一步测试,把这个掩模的矩阵赋值改到255,增加下述代码:

mask1=np.zeros((t_max, t_max,1),np.uint8)   # 定义一个竖直和水平像素均为t_max的全0矩阵
mask1[20:300, 200:500, ] = 255  # 第二个图像
cv.imshow('display-mask', mask1)  # 显示图像
cv.imwrite('gray-pho-mask.png',mask1)  # 保存图像
img=cv.add(image1,image2,mask=mask1) # 第一和第二图像叠加
cv.imshow('display-123-mask', img)  # 显示图像
cv.imwrite('gray-pho-123-mask.png', img)  # 保存图像

此时获得的图像为:

图5 gray-pho-mask.png-掩模

图6 gray-pho-123-mask.png-使用add()函数+掩模

可见,使用掩模效果后,图像依然是image1+image2的效果,且只在掩模控制的区域显示这个叠加效果。

此时的完整代码为:

import numpy as np  # 引入numpy模块
import cv2 as cv  # 引入cv2模块
from imageio.v2 import imwrite# 定义图像
t = np.arange(300, 600, 20)  # 定义变量,在[300,600)区间,每隔20取一个值
t_max = np.max(t)  # 取变量最大值作为像素大小
print('t_max=', t_max)  # 输出最大值
image = np.zeros([t_max, t_max, 3], np.uint8)  # 定义一个竖直和水平像素均为t_max的全0矩阵
image[:, :, 0] = 155  # 第一个通道值
image[:, :, 1] = 200  # 第二个通道值
image[:, :, 2] = 255  # 第三个通道值# 显示和保存定义的图像
cv.imshow('display-pho', image)  # 显示图像
cv.imwrite('gray-pho-3.png', image)  # 保存图像image1 = np.zeros([t_max, t_max, 3], np.uint8)  # 定义一个竖直和水平像素均为t_max的全0矩阵
image1[:, :, 0] = 155  # 第一个图像
image2 = np.zeros([t_max, t_max, 3], np.uint8)  # 定义一个竖直和水平像素均为t_max的全0矩阵
image2[:, :, 1] = 200  # 第二个图像
image3 = np.zeros([t_max, t_max, 3], np.uint8)  # 定义一个竖直和水平像素均为t_max的全0矩阵
image3[:, :, 2] = 255  # 第三个图像
img=cv.add(image1,image2) # 第一和第二图像叠加
cv.imshow('display-12', img)  # 显示图像
cv.imwrite('gray-pho-12.png', img)  # 保存图像
img=cv.add(img,image3) # 第一、第二和第三图像叠加
cv.imshow('display-123', img)  # 显示图像
cv.imwrite('gray-pho-123.png', img)  # 保存图像#验证掩模效果
mask=np.zeros((t_max, t_max,1),np.uint8)   # 定义一个竖直和水平像素均为t_max的全0矩阵
mask[20:300, 200:500, ] = 200  # 第二个图像
cv.imshow('display-mask', mask)  # 显示图像
cv.imwrite('gray-pho-mask.png',mask)  # 保存图像
img=cv.add(image1,image2,mask=mask) # 第一和第二图像叠加
cv.imshow('display-12-mask', img)  # 显示图像
cv.imwrite('gray-pho-12-mask.png', img)  # 保存图像mask1=np.zeros((t_max, t_max,1),np.uint8)   # 定义一个竖直和水平像素均为t_max的全0矩阵
mask1[20:300, 200:500, ] = 255  # 第二个图像
cv.imshow('display-mask', mask1)  # 显示图像
cv.imwrite('gray-pho-mask.png',mask1)  # 保存图像
img=cv.add(image1,image2,mask=mask1) # 第一和第二图像叠加
cv.imshow('display-123-mask', img)  # 显示图像
cv.imwrite('gray-pho-123-mask.png', img)  # 保存图像cv.waitKey()  # 图像不关闭
cv.destroyAllWindows()  # 释放所有窗口

【3】总结

掌握了使用python+opencv实现使用cv2.add()函数进行多图像叠加的技巧,并探索了掩模的影响。

http://www.hkea.cn/news/186447/

相关文章:

  • 想要将网站信息插到文本链接怎么做百度关键词搜索
  • 江苏网站备案要多久seo域名综合查询
  • 大型网站建设机构津seo快速排名
  • 建设证件查询官方网站宁波做网站的公司
  • 那些网站招聘在家里做的客服网店推广策略
  • 湘西 网站 建设 公司sem代运营托管公司
  • 用css为wordpress排版西安seo外包服务
  • vs2005做网站百度推广官方网站登录入口
  • 乐从网站建设公司北京seo优化推广
  • 如何在网上接做网站的小项目市场监督管理局电话
  • 淘宝购物站优化
  • 石家庄最新疫情轨迹河南网站优化公司哪家好
  • 网站色彩搭配服务器ip域名解析
  • 哪个网站专业做安防如何注册域名网站
  • 穆棱市住房和城乡建设局网站关键词词库
  • 成都网站建设市场什么是网络营销的核心
  • 深圳找人做网站廊坊优化外包
  • 衡阳市城市建设投资有限公司网站湖南企业seo优化报价
  • css做网站常用百度权重优化软件
  • 合合肥网站建设制作网站用什么软件
  • 杭州网站设计公司推荐网络推广与优化
  • 移动惠生活app下载网址荆门网站seo
  • 做网站很赚钱吗关键词自助优化
  • wordpress小工具里的用户中心南京谷歌优化
  • 网站开发中茶叶网络营销策划方案
  • 临海市住房与城乡建设规划局 网站目前最新的营销模式有哪些
  • 高校建设网站的特色如何建立一个网站
  • 公司做网站域名归谁搜索引擎营销策划方案
  • 怎么做外贸个人网站seo综合查询工具可以查看哪些数据
  • 黑客网站盗qq百度seo公司整站优化