请选择 进入手机版 | 继续访问电脑版
 找回密码

上海老站长门户

点击联系客服
客服QQ: 客服微信:
查看: 44|回复: 36

2021-09-09

[复制链接]

1

主题

1

帖子

-7

积分

限制会员

积分
-7
发表于 2021-9-14 07:26:00 | 显示全部楼层 |阅读模式
Day2 图像算数(加法)

add

1.图像=img1 img2:直接添加两张图片

Import  cv2

Import  numpy  as  NP

img  1=cv  2 . im  read(‘c  3360 \ \ users  \ \ 1 \ \ pycharmprojects  \ \ text  \ \ 1 . JPEG’)

img  2=cv  2 . im  read(‘c  3360 \ \ users  \ \ 1 \ \ pycharmprojects  \ \ text  \ \ 1 . JPEG’)

图像=img1 img2

Cv2.namedWindow('image  ',0)

Cv2.imshow('image  ',image)

Cv2.waitKey(0)

Cv2.destroyAllWindows()





2.通过add()函数添加与直接添加不同,因为两点的像素值大于255时,add会将结果值限制在255

Import  cv2

Import  numpy  as  NP

img  1=cv  2 . im  read(‘c  3360 \ \ users  \ \ 1 \ \ pycharmprojects  \ \ text  \ \ 1 . JPEG’)

img  2=cv  2 . im  read(‘c  3360 \ \ users  \ \ 1 \ \ pycharmprojects  \ \ text  \ \ 1 . JPEG’)

Image=cv2.add(img1,img2)

Cv2.namedWindow('image  ',0)

Cv2.imshow('image  ',image)

Cv2.waitKey(0)

Cv2.destroyAllWindows()





3.addweighted  (src1、weight1、src2、weight2、add、image)

可以根据不同的权重添加图片。add是上面和后面加上的数字,达到255。照片都是白色的。(大卫亚设,Northern  Exposure(美国电视剧),Image是照片输出。

Import  cv2

img  1=cv  2 . im  read(‘c  3360 \ \ users  \ \ 1 \ \ pycharmprojects  \ \ text  \ \ 1 . JPEG’)

img  2=cv  2 . im  read(‘c  3360 \ \ users  \ \ 1 \ \ pycharmprojects  \ \ text  \ \ 1 . JPEG’)

Image=cv2.addweighted  (img1,0.3,img2,0.7,1)

Cv2.namedWindow('image  ')

Cv2.imsho
w('image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

在对函数的解析文章中,很多以c++为工具的文章都以最后一个参数为输出,也就是不需要再image = addWeighted了,但实际在python环境中,似乎并不能这样做。

叠加
[ol]
  • 掩膜(mask)
    掩膜是图像处理中一个常见的概念,脱胎于半导体工艺。
    我将其理解为一种保护,保护掩膜区域内的数据,具体例子如下:


    可以看到在掩膜为1的地方原始图的数据保留了下来。
    具体实现措施为二者进行逻辑与,与mask中的0相与的数据全部归零,与1相与的数据则保留了下来。
  • mask的制作:


    我们以在图片中插入python标志为例[/ol]
    img1gray = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)

    将插入图片灰度化

    ret, mask = cv2.threshold(img1gray, 220, 255, cv2.THRESH_BINARY_INV)

    再进行二值化
    cv2.threshold()函数的参数分别为:图片源,阈值,二值化的最大值,二值化的方式
    具体参数:


    可得:


    因为我们是想要插入中间的python标志图像,所以我们可以现在原图中扣出一个空框出来,具体操作如下:

    rows, cols, channels = img1.shape
    roi = img2[0:rows, 0:cols]
    img1gray = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
    ret, mask = cv2.threshold(img1gray, 220, 255, cv2.THRESH_BINARY_INV)
    mask_inv = cv2.bitwise_not(mask)
    roi = cv2.bitwise_and(roi, roi, mask=mask_inv)

    这里我们用的是mask的逆图像,因为只有当图像为黑的部分,及灰度值为0,在与其他图像求与是会恒为0,达到了扣图的目的


    3. 制作:
    现在开始制作有效图像,现在我们需要得到有python标志的上图,因为上图中只有应有py标志的区域灰度值为0,所以我们需要有原彩的标志和为纯黑的背景图像,将两者相加即可得到。而掩膜的作用就是将需要的部分之外的全变成0,这也是我们制作两个掩膜的原因,一个保留图案,一个保留背景。全部代码如下:

    import cv2
    img1 = cv2.imread('C:\\Users\\1\\PycharmProjects\\text\\3.jpg')
    img2 = cv2.imread('C:\\Users\\1\\PycharmProjects\\text\\1.jpeg')
    rows, cols, channels = img1.shape
    roi = img2[0:rows, 0:cols]
    img1gray = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
    ret, mask = cv2.threshold(img1gray, 220, 255, cv2.THRESH_BINARY_INV)
    mask_inv = cv2.bitwise_not(mask)
    roi1 = cv2.bitwise_and(roi, roi, mask=mask_inv)
    roi2 = cv2.bitwise_and(img1, img1, mask=mask)
    roi = cv2.add(roi1, roi2)
    img2[0:rows, 0:cols] = roi
    cv2.namedWindow('image',cv2.WINDOW_NORMAL )
    cv2.imshow('image', img2)
    cv2.waitKey(0)
    cv2.destroyAllWindows()


    最后将原图那部分区域进行替换即可
  • 回复

    使用道具 举报

    1

    主题

    614

    帖子

    235

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    235
    发表于 2021-9-14 07:28:16 | 显示全部楼层
    相当不错,感谢无私分享精神!
    回复

    使用道具 举报

    1

    主题

    656

    帖子

    127

    积分

    注册会员

    Rank: 2

    积分
    127
    发表于 2021-9-14 08:00:49 | 显示全部楼层
    我抢、我抢、我抢沙发~
    回复

    使用道具 举报

    2

    主题

    668

    帖子

    166

    积分

    注册会员

    Rank: 2

    积分
    166
    发表于 2021-9-14 08:39:28 | 显示全部楼层
    看帖回帖是美德!
    回复

    使用道具 举报

    1

    主题

    685

    帖子

    167

    积分

    注册会员

    Rank: 2

    积分
    167
    发表于 2021-9-14 09:00:49 | 显示全部楼层
    帮帮顶顶!!
    回复

    使用道具 举报

    1

    主题

    635

    帖子

    148

    积分

    注册会员

    Rank: 2

    积分
    148
    发表于 2021-9-14 10:07:57 | 显示全部楼层
    写的真的很不错
    回复

    使用道具 举报

    1

    主题

    678

    帖子

    135

    积分

    注册会员

    Rank: 2

    积分
    135
    发表于 2021-9-14 10:29:22 | 显示全部楼层
    我抢、我抢、我抢沙发~
    回复

    使用道具 举报

    1

    主题

    663

    帖子

    183

    积分

    注册会员

    Rank: 2

    积分
    183
    发表于 2021-9-14 10:53:40 | 显示全部楼层
    我是个凑数的。。。
    回复

    使用道具 举报

    1

    主题

    685

    帖子

    167

    积分

    注册会员

    Rank: 2

    积分
    167
    发表于 2021-9-14 11:19:09 | 显示全部楼层
    帮帮顶顶!!
    回复

    使用道具 举报

    1

    主题

    626

    帖子

    115

    积分

    注册会员

    Rank: 2

    积分
    115
    发表于 2021-9-14 11:39:31 | 显示全部楼层
    支持一下
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ| 无图版|手机版|小黑屋| 上海@IT精英团

    Copyright © 2001-2015 Comsenz Inc.   All Rights Reserved.

    Powered by Discuz! X3.4

    快速回复 返回顶部 返回列表