Python-OpenCV(4)

我想把 NBA 的标志放到另一幅图像(LBJ传球)上。但是现在有个问题: 如果我使用加法,颜色会改变,如果使用混合,会得到透明效果,但是我不想要透明的 于是我们可以通过下面的按位运算实现:

cv2.bitwise_and() cv2.bitwise_or() cv2.bitwise_xor() cv2.bitwise_not()

这些API的意思,就是你看到的,AND、OR、XOR、NOT 二值运算,相信这些大家肯定都懂

代码:

__author__ = 'gavinzhou'
# -*- coding: utf-8 -*-

import cv2

# read the images
im1 = cv2.imread("./images/1.png")
im2 = cv2.imread("./images/logo.jpg")

# show the original images
cv2.imshow("IM1", im1)
cv2.imshow("IM2", im2)

# set the ROI
roi = im1[0:im2.shape[0], 0:im2.shape[1], :]
cv2.imshow("ROI", roi)

# create mask of the im2
im2_gray = cv2.cvtColor(im2, cv2.COLOR_BGR2GRAY)
ret, mask = cv2.threshold(im2_gray, 180, 255, cv2.THRESH_BINARY)
mask_inv = cv2.bitwise_not(mask)

# get the bg and fg image of im2
im2_bg = cv2.bitwise_and(roi, roi, mask=mask_inv)
im2_fg = cv2.bitwise_and(im2, im2, mask=mask)

# add the roi to fg image
im_dst = cv2.add(im2_bg, im2_fg)

# set the image region to im1
im1[0:im2.shape[0], 0:im2.shape[1], :] = im_dst

# show all the images
cv2.imshow("IM2_BG", im2_bg)
cv2.imshow("IM2_FG", im2_fg)
cv2.imshow("FIN_FG", im1)
cv2.waitKey(9000)
cv2.destroyAllWindows()

结果: 原始的小图(im1和im2)

roi和bg和fg

最终结果

结果上看的出来,我已经把NBA的logo放到了LBJ的图上,这种效果就类似与PS的图层效果,一层归一层互不影响,如果使用加法会改变原来的颜色,混合则会产生透明,对于图层的效果,使用位运算是最好的

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏阿凯的Excel

巧妙完成二维表的数据匹配

接下来我将每周分享一个广大网友向我提问的经典问题。 本周问题,如何对二维表进行匹配! 原表格! ? 备注:以上人名,均属虚构,如有雷同!说明有缘!!! 咳...

2743
来自专栏walterlv - 吕毅的博客

用动画的方式画出任意的路径(直线、曲线、折现)

发布于 2017-11-20 00:49 更新于 2017-11...

632
来自专栏烙馅饼喽的技术分享

Silverlight像素着色器编写简明指南 附送文字描边效果

      在玩很多flash网页游戏的时候,看到它们都有非常清晰的宋体字,并且有漂亮的描边效果。如图,这是战将传奇的登录界面中的文字。 ? 对比之下,silv...

1927
来自专栏IMWeb前端团队

transform 的副作用

本文作者:IMWeb elvin 原文出处:IMWeb社区 未经同意,禁止转载 transform 想必大家都很熟悉,可以通过其转换(translat...

1999
来自专栏菩提树下的杨过

“AS3.0高级动画编程”学习:第一章高级碰撞检测

AdvancED ActionScript 3.0 Animation 是Keith Peters大师继"Make Things Move"之后的又一力作,网上...

19010
来自专栏数据小魔方

一款脑洞大开的表格可视化神器

今天跟大家介绍一款任坤大神写的新包——formattable。 这个包的功能很简单,但是却很具创意性,它颠覆了R语言data.frame数据表的呈现方式,允许在...

4468
来自专栏GIS讲堂

Openlayers4中风场的实现

[lat, lon, wd, ws],其中:lat为纬度;lon为经度;wd为风向;ws为风速。

751
来自专栏GIS讲堂

Arcgis for JS之Cluster聚类分析的实现(基于区域范围的)

咱们书接上文,在上文,实现了基于距离的空间聚类的算法实现,在本文,将继续介绍空间聚类之基于区域范围的实现方式,好了,闲言少叙,先看看具体的效果:

825
来自专栏游戏开发那些事

【python游戏编程之旅】第四篇---pygame中加载位图与常用的数学函数。

本系列博客介绍以python+pygame库进行小游戏的开发。有写的不对之处还望各位海涵。

1032
来自专栏Modeng的专栏

canvas学习总结五:线段的端点与连接点

版权声明:本文为原创文章发布于公众号:Modeng , 你可以随意转载但请务必注明出处!!! https://blog.csdn.net/qq_32135...

622

扫码关注云+社区