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

上线了做网站要钱推广方法

上线了做网站要钱,推广方法,专业宣传片制作拍摄公司,本地wordpress怎么上传【0】基础定义 按位与运算:全1取1,其余取0。按位或运算:全0取0,其余取1。 【1】引言 前序学习进程中,已经对图像按位与计算进行了详细探究,相关文章链接如下: python学opencv|读取图像&…

【0】基础定义

按位与运算:全1取1,其余取0。按位或运算:全0取0,其余取1。

【1】引言

前序学习进程中,已经对图像按位与计算进行了详细探究,相关文章链接如下:

python学opencv|读取图像(四十三)使用cv2.bitwise_and()函数实现图像按位与运算-CSDN博客

python学opencv|读取图像(四十四)原理探究:bitwise_and()函数实现图像按位与运算-CSDN博客

python学opencv|读取图像(四十五)增加掩模:使用cv2.bitwise_and()函数实现图像按位与运算-CSDN博客

图像的按位与运算,是将各个像素点的BGR值先由十进制转二进制,在二进制环境下进行按位与运算后,再转回十进制的过程。

当三个图像进行按位与运算时,先前两个图像按位与运算,再将按位与运算结果和第三个图像执行按位与运算。

在此基础上,本次文章进一步探究图像的按位或运算。

在按位与运算的学习基础上,不妨大胆猜测图像的按位或运算工作原理:将各个像素点的BGR值先由十进制转二进制,在二进制环境下进行按位或运算后,再转回十进制。

【2】官网教程

点击下方链接,直达按位或运算的官网教程:

OpenCV: Operations on arrays

官网对按位或运算函数cv2.bitwise_or()的解释为:

图1

 在这里,对应的参数意义为:

具体的,参数意义为:

    void cv::bitwise_or     (     InputArray     src1,       #第一个图像
            InputArray     src2,                                        #第二个图像
            OutputArray     dst,                                       #输出图像
            InputArray     mask = noArray() )                  #掩模,单通道数据,可选参数

按位或运算要求数据的大小一致,对于三通道图像,会逐个通道进行按位或运算。

按位或运算的mask掩模参数也要求是单通道的二维矩阵。

【3】代码测试

由于前述对bitwise_and()函数的探究已经足够详细,所以可以直接借用先前代码的大部分内容,稍加修改就能获得bitwise_or()函数的完整代码:

import cv2 as cv # 引入CV模块
import numpy as np #引入numpy模块# 读取图片-直接转化灰度图
src = cv.imread('srcx.png') #读取图像
dst=src #输出图像
gray_src=cv.cvtColor(src,cv.COLOR_BGR2GRAY) #转化为灰度图
dstg=gray_src #输出图像
print('初始图像像素大小为',src.shape)
print('初始图像灰度图像素大小为',gray_src.shape)# 定义第二个图像
image = np.zeros(src.shape, np.uint8)  # 定义一个竖直和水平像素与初始图像等大的全0矩阵
print('初始图像像素大小为',src.shape)
image[50:350, :, :] = 180  # 行掩模
image[:,120:200,: ] = 255  # 列掩模
image[:, :, 1] = 180  # 第二个通道值#定义掩模矩阵
mask = np.zeros((gray_src.shape), np.uint8)  # 定义一个竖直和水平像素与初始图像等大的全0矩阵
mask[280:350, :] = 155  # 水平区域
mask[:,150:350] = 100  # 竖直区域#按位与运算
img=cv.bitwise_or(src,image) #与运算
img2=cv.bitwise_or(src,image,mask=mask) #与运算#显示BGR值
print("dst像素数为[300,180]位置处的BGR=", dst[300,180])  # 获取像素数为[100,100]位置处的BGR
print("image像素数为[300,180]位置处的BGR=", image[300,180])  # 获取像素数为[100,100]位置处的BGR
print("img像素数为[300,180]位置处的BGR=", img[300,180])  # 获取像素数为[100,100]位置处的BGR
print("img2像素数为[300,180]位置处的BGR=", img2[300,180])  # 获取像素数为[100,100]位置处的BGRa=np.zeros((1,3),np.uint8) #定义矩阵
a=dst[300,180] #将像素点BGR直接赋值给矩阵
b=np.zeros((1,3),np.uint8) #定义矩阵
b=image[300,180] #将像素点BGR直接赋值给矩阵
c=np.zeros((1,3),np.uint8) #定义矩阵
d=np.zeros((1,3),np.uint8) #定义矩阵
d=image[300,180] #将像素点BGR直接赋值给矩阵
e=np.zeros((1,3),np.uint8) #定义矩阵#二进制按位与计算e
for i in range(3): #计数print('a','[0,',i,']=',a[i],'的二进制转化值=', bin(a[i]), ',b=','[0,',i,']=', b[i],'的二进制转化值=',bin(b[i])) #输出二进制转化值c[0,i]=np.bitwise_and(a[i],b[i]) #赋值按位与计算值print('c',[0,i],'=',c[0,i]) #输出按位与计算值print('c','[0,',i,']=',[0,i],'的二进制转化值=', bin(c[0,i]), ',d=','[0,',i,']=', d[i],'的二进制转化值=',bin(d[i])) #输出二进制转化值e[0,i]=np.bitwise_and(c[0,i],d[i]) #赋值按位与计算值print('e',[0,i],'=',e[0,i]) #输出按位与计算值#输出矩阵结果
print('a=',a) #输出矩阵
print('b=',b) #输出矩阵
print('c=',c) #输出矩阵
print('d=',d) #输出矩阵
print('e=',e) #输出矩阵#合并图像
himg=np.hstack((src,img))
himg2=np.hstack((src,img2))
himg3=np.hstack((img,img2))
# 显示和保存定义的图像
cv.imshow('dst', dst)  # 显示图像
cv.imshow('or-img', img)  # 显示图像
cv.imwrite('or-img.png', img)  # 保存图像
cv.imshow('or-img2', img2)  # 显示图像
cv.imwrite('or-img2.png', img2)  # 保存图像
cv.imshow('or-image', image)  # 显示图像
cv.imwrite('or-image.png', image)  # 保存图像
cv.imshow('or-mask', mask)  # 显示图像
cv.imwrite('or-mask.png', mask)  # 保存图像
cv.imshow('or-himg', himg)  # 显示图像
cv.imwrite('or-himg.png', himg)  # 保存图像
cv.imshow('or-himg2', himg2)  # 显示图像
cv.imwrite('or-himg2.png', himg2)  # 保存图像
cv.imshow('or-himg3', himg3)  # 显示图像
cv.imwrite('or-himg3.png', himg3)  # 保存图像
cv.waitKey()  # 图像不关闭
cv.destroyAllWindows()  # 释放所有窗口

代码里给出了两种按位或运算的执行过程,第一个不带掩模参数,第二个带有掩模参数:

#按位与运算
img=cv.bitwise_or(src,image) #与运算
img2=cv.bitwise_or(src,image,mask=mask) #与运算

另外将特定像素点的BGR值按位与运算改为了按位或运算:

#二进制按位与计算e
for i in range(3): #计数print('a','[0,',i,']=',a[i],'的二进制转化值=', bin(a[i]), ',b=','[0,',i,']=', b[i],'的二进制转化值=',bin(b[i])) #输出二进制转化值c[0,i]=np.bitwise_or(a[i],b[i]) #赋值按位与计算值print('c',[0,i],'=',c[0,i]) #输出按位与计算值print('c','[0,',i,']=',[0,i],'的二进制转化值=', bin(c[0,i]), ',d=','[0,',i,']=', d[i],'的二进制转化值=',bin(d[i])) #输出二进制转化值e[0,i]=np.bitwise_or(c[0,i],d[i]) #赋值按位与计算值print('e',[0,i],'=',e[0,i]) #输出按位与计算值

代码运行相关的图像为:

图2 初始图像srcx.png

图3 带掩模的第二张图像or-image.png

 图3 掩模矩阵对应的第三张图像or-mask.png

 图4 不带掩模矩阵的按位或运算效果or-img.png 

 图5 带掩模矩阵的按位或运算效果or-img2.png  

 图6 不带掩模矩阵VS带掩模矩阵的按位或运算效果or-himg3.png

由图2至图6可见,随着按位或运算函数cv2.bitwise_or()的功能执行,图像的色彩出现了明显变化。为增强对比效果,继续输出图像:

 图7 初始图像和不带掩模矩阵的按位或运算效果or-himg.png 

 图8 初始图像和不带掩模矩阵的按位或运算效果or-himg2.png 

综合图7和图8,按位或运算函数cv2.bitwise_or()执行后,只在带有掩模的区域出现了图像。为此查看特定像素点的BGR值:

图9  特定像素点BGR按位或运算验证

由图9读取的数据可知:使用cv2.bitwise_or()函数执行图像按位或计算时,当面向两张图像时,各个像素点的BGR值都是按照十进制转二进制、二进制按位或计算,然后再转回十进制的顺序进行。当面向三张图像时,先对前两张图像执行按位或计算,此时会获得一张中间图像,然后中间图像和第三个图像再次执行按位或计算。

图10 cv2.bitwise_or()函数工作流程

【3】总结

掌握了python+opencv实现使用cv2.bitwise_or()函数实现图像带掩模矩阵按位或计算的技巧。

http://www.fp688.cn/news/164468.html

相关文章:

  • 通辽做网站的公司seo诊断
  • 河北做网站的公司哪里可以建网站
  • 银川专业做网站如何拥有自己的网站
  • 网站建设与运营财务报表怎么给公司做网站
  • 西宁做网站公司电话百度网站怎么提升排名
  • 海宁高端网站设计武汉seo网站优化技巧
  • 长垣县做网站的在线识别图片百度识图
  • 关于网站建设的外文翻译企业宣传标语
  • 怎么给网站做背景软件外包
  • 自学做网站可以嘛网上推广方式
  • 家电网站建设需求分析南宁百度seo建议
  • php企业网站东莞网站推广优化网站
  • 网站性能关键词挖掘查询工具
  • 做网站怎么对接国际收款商户网络广告的优势有哪些
  • 橙色在网站中的应用sem推广软件哪家好
  • 找做网站公司网络推广怎么找客户
  • 坂田网站建设费用明细西安seo按天收费
  • 网站链接dw怎么做网络关键词
  • 广州免费技能培训班谷歌seo引擎优化
  • 有个人免费网站吗网络广告推广方案
  • 网站开发公司排行如何进行网站制作
  • 柳州网站建设工作室百度一下app下载安装
  • 能够做物理题的网站有创意的网络广告案例
  • 曹县网站开发网页推广怎么做的
  • 虚拟币网站开发成都私人网站建设
  • 有什么可以在线做奥数题的网站关键词林俊杰
  • 怎么做国外赌球网站代理手机免费发布信息平台
  • 哪个网站做的系统好用惠州百度seo
  • 凡科网做的网站怎么样企业推广的网站
  • 搜狐视频网站联盟怎么做手机端百度收录入口