opencv-python的位运算cv2.bitwise_and,cv2.bitwise_not使用及效果展示

opencv-python的位运算cv2.bitwise_and,cv2.bitwise_not使用及效果展示考虑下面两张图片 怎样得到下面的效果 这里使用按位运算的方法 第一步 截取操作区域 img1 cv2 imread material images 23126 92 jpg img2 cv2 imread material images opencv jpg rows cols channels img2 shaperoi im

我的小程序: 

opencv-python的位运算cv2.bitwise_and,cv2.bitwise_not使用及效果展示
待办计划:给自己立个小目标吧!

考虑下面两张图片:

opencv-python的位运算cv2.bitwise_and,cv2.bitwise_not使用及效果展示opencv-python的位运算cv2.bitwise_and,cv2.bitwise_not使用及效果展示

怎样得到下面的效果:

opencv-python的位运算cv2.bitwise_and,cv2.bitwise_not使用及效果展示

这里使用按位运算的方法。

第一步,截取操作区域:

img1 = cv2.imread('../material/images/23126-92.jpg') img2 = cv2.imread('../material/images/opencv.jpg') rows,cols,channels = img2.shape roi = img1[0:rows,0:cols] plt.imshow(roi[...,::-1])

opencv-python的位运算cv2.bitwise_and,cv2.bitwise_not使用及效果展示

第二步,使用cv2.cvtColor()函数将图片转成灰度图:

#颜色空间转换,这里是BGR转到灰度空间,常用的还有BGR到HSV空间:cv2.COLOR_BGR2HSV img2gray = cv2.cvtColor(img2,cv2.COLOR_BGR2GRAY) plt.imshow(img2gray,cmap='gray')

opencv-python的位运算cv2.bitwise_and,cv2.bitwise_not使用及效果展示

第三步,使用二值化函数cv2.threshold()将灰度图二值化:

#THRESH_BINARY=0,THRESH_BINARY_INV,THRESH_TRUNC,THRESH_TOZERO,THRESH_TOZERO_INV,THRESH_OTSU,THRESH_TRIANGLE,THRESH_MASK #二值化函数threshold(src, thresh, maxval, type[, dst]),thresh:阈值,maxval:最大值,type:阈值类型 #ret:暂时就认为是设定的thresh阈值,mask:二值化的图像 ret,mask = cv2.threshold(img2gray,175,255,cv2.THRESH_BINARY) plt.imshow(mask,cmap='gray')

opencv-python的位运算cv2.bitwise_and,cv2.bitwise_not使用及效果展示

第四部,使用“非”操作函数cv2.bitwise_not()将上图颠倒黑白:

mask_inv = cv2.bitwise_not(mask) plt.imshow(mask_inv,cmap='gray')

opencv-python的位运算cv2.bitwise_and,cv2.bitwise_not使用及效果展示

第五步,使用“与”操作函数cv2.bitwise_and()对图像掩膜(遮挡):

对操作区域掩膜:

img1_bg = cv2.bitwise_and(roi,roi,mask=mask) plt.imshow(img1_bg[...,::-1])

opencv-python的位运算cv2.bitwise_and,cv2.bitwise_not使用及效果展示

 对img2掩膜:

img2_fg = cv2.bitwise_and(img2,img2,mask = mask_inv) plt.imshow(img2_fg[...,::-1])

opencv-python的位运算cv2.bitwise_and,cv2.bitwise_not使用及效果展示

注意两次掩膜使用的mask不同。cv2.bitwise_and()函数前两个参数是“与”操作的操作对象,mask参数指定使用的模板。

第六步,使用cv2.add()函数将上面两图混合(相加):

dst = cv2.add(img1_bg,img2_fg) plt.imshow(dst[...,::-1])

opencv-python的位运算cv2.bitwise_and,cv2.bitwise_not使用及效果展示

最后一步,覆盖操作区域,就得到了最后结果:

img1[0:rows,0:cols] = dst plt.imshow(img1[...,::-1])

opencv-python的位运算cv2.bitwise_and,cv2.bitwise_not使用及效果展示

opencv-python的位运算cv2.bitwise_and,cv2.bitwise_not使用及效果展示
待办计划:给自己立个小目标吧!

参考资料:《OpenCV-Python 中文教程》段力辉 译

参考博文:

opencv-python图像二值化函数cv2.threshold函数详解及参数cv2.THRESH_OTSU使用

OpenCV之bitwise_and、bitwise_not等图像基本运算及掩膜

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/211763.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午9:39
下一篇 2026年3月18日 下午9:40


相关推荐

  • querySelectorAll和querySelector用法

    querySelectorAll和querySelector用法querySelecto 和 querySelecto 用法找出所有标签 document querySelecto 找出 head 下所有的标签 document head querySelecto 找出 body 标签下的第一个 div 标签 document body querySelecto div 0 document body querySelecto div 找出所有 class box 的标签 document querySelecto

    2025年7月18日
    4
  • 欧拉图&哈密顿图详解

    欧拉图&哈密顿图详解欧拉图 小声 bb 又是一些无聊的概念性知识 存在欧拉回路的无向图被称为欧拉图 有欧拉通路 但无欧拉回路的图被称为半欧拉图 欧拉回路 若存在一条从起点 S 出发的路径 每条边恰好只走一次 最终回到起点 S 欧拉路径 若存在一条从起点 S 出发的路径 经过每条边一次 但是不要求回到起点 S 类似一笔画 欧拉回路和欧拉路径的判断根据顶点的度数来判断 关于顶点的度数讲拓扑排序的时候已经说了

    2026年3月19日
    2
  • PB 生成和解析JSON格式数据「建议收藏」

    PB 生成和解析JSON格式数据「建议收藏」一创建用户对象sailjsonforwardglobaltypesailjsonfromnonvisualobjectendtypetypejson_pairfromstructurewithinsailjsonendtypeendforwardtypejson_pairfromstructurestringnameanyvalueendtypeglobal

    2025年8月4日
    10
  • 快速阶乘算法

    快速阶乘算法求:n! mod p\largen!\text{mod}pn! mod p时间复杂度:Θ(nlog⁡n)\Theta(\sqrtn\logn)Θ(n​logn)模板题:P5282【模板】快速阶乘算法参考:P5282【模板】快速阶乘算法(多项式运算+拉格朗日插值+倍增)//minamoto#include<bits/stdc++.h>#defineRregister#definelllonglong#defin

    2022年7月24日
    13
  • 预格式化文本pre标签

    预格式化文本pre标签pre 元素可定义预格式化的文本 被包围在 pre 元素中的文本通常会保留空格和换行符 而文本也会呈现为等宽字体 pre 标签的一个常见应用就是用来表示计算机的源代码 演示 pre 此例演示如何使用 pre 标签对空行和空格进行控制 pre 效果如下 此例演示如何使用 pre 标签对空行和空格进行控制所谓的预格式化文本就是 按照我们预先写好的文字格式 pre

    2026年3月17日
    2
  • Ajax 请求的五大步骤

    Ajax 请求的五大步骤什么是AjaxAjax:即异步JavaScript和XML,Ajax是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新,而传统不使用Ajax的网页,如果需要更新内容,必需重载整个网页面。Ajax的工作原理Ajax的工作原理相当关于在用户和服务器之间加了一个中间层(Ajax引擎),使用户操作与服务器响应异步化,并不是所有的用户请求都提交给服务器。像一些数据验证和数据

    2022年5月17日
    48

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号