关于图像的位操作,目的是为了将一个logo覆盖到另一个图片上。

# -*- coding: utf-8 -*-
"""
Created on Wed Sep 28 20:05:50 2016 @author: Administrator
""" '''
位运算
Bitwise Operations
'''
import numpy as np
import cv2 def show(img_name,img_data):
cv2.imshow(img_name,img_data)
cv2.waitKey(0)
cv2.destroyAllWindows() # Load two images
img1 = cv2.imread('ml.png')
img2 = cv2.imread('opencv_logo.png') # I want to put ligo on top-left corner,so I create a ROI
rows,cols,channels = img2.shape
roi = img1[0:rows,0:cols]
#show('roi',roi) # Now create a mask of logo and create its inverse mask also
img2gray = cv2.cvtColor(img2,cv2.COLOR_BGR2GRAY)
#show('img2gray',img2gray)
# threshold 阀值函数
# grayscale image; threshold; maxval; function of style
# THRESH_BINARY
ret, mask = cv2.threshold(img2gray,10,255,cv2.THRESH_BINARY)
#show('mask',mask) mask_inv = cv2.bitwise_not(mask)
#show('mask_inv',mask_inv)
# Now black-out the area of logo in ROI
# sr1;sr2;dst;mask;
# dst 就是记录结果的 mask 就是控制位
# 就是 2个数据都要先和mask按位和 然后再按位和 如果有mask这个参数的话
# 通过位的与运算,达到“掩盖”的目的
img1_bg = cv2.bitwise_and(roi,roi,mask = mask_inv)
#show('img1_bg',img1_bg) # Take only region of logo from logo image
img2_fg = cv2.bitwise_and(img2,img2,mask=mask) #show('img2_fg',img2_fg) # Put logo in ROI and modify the main image
dst = cv2.add(img1_bg,img2_fg)
show('dst',dst) img1[0:rows,0:cols] = dst show('res',img1)

  输出图形(位置好像不太对。。。请忽略):

  这里感谢交流群里废帝和黄同学帮助理解位运算。目前还是不能深入理解,再学习下吧。

Python OpenCV —— bitwise的更多相关文章

  1. 搭建基于python +opencv+Beautifulsoup+Neurolab机器学习平台

    搭建基于python +opencv+Beautifulsoup+Neurolab机器学习平台 By 子敬叔叔 最近在学习麦好的<机器学习实践指南案例应用解析第二版>,在安装学习环境的时候 ...

  2. .NET + OpenCV & Python + OpenCV 配置

    最近需要做一个图像识别的GUI应用,权衡了Opencv+ 1)QT,2)Python GUI,3).NET后选择了.NET... 本文给出C#+Opencv和Python+Opencv的相应参考,节省 ...

  3. RPi 2B python opencv camera demo example

    /************************************************************************************** * RPi 2B pyt ...

  4. Python+OpenCV图像处理(一)

    Python+OpenCV图像处理(一): 读取,写入和展示图片 调用摄像头拍照 调用摄像头录制视频 1. 读取.写入和展示图片 图像读入:cv2.imread() 使用函数cv2.imread() ...

  5. python opencv show图片,debug技巧

    debug的时候可以直接把图片画出来debug. imshow函数就是python opencv的展示图片的函数,第一个是你要起的图片名,第二个是图片本身.waitKey函数是用来展示图片多久的,默认 ...

  6. Python+OpenCV图像处理(一)——读取显示一张图片

    先在此处先声明,后面学习python+opencv图像处理时均参考这位博主的博文https://blog.csdn.net/u011321546/article/category/7495016/2? ...

  7. Python+opencv 图像拼接

    1.http://www.cnblogs.com/skyfsm/p/7411961.html ,给出了很好地拼接算法实现 2.由于不是Python的,所以简单做了一些翻译转成Python+opencv ...

  8. 【python+opencv】直线检测+圆检测

     Python+OpenCV图像处理—— 直线检测 直线检测理论知识: 1.霍夫变换(Hough Transform) 霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进 ...

  9. python - opencv 的一些小技巧备忘

    python - opencv 的一些小技巧备忘 使用python-opencv来处理图像时,可以像matlab一样,将一幅图像看成一个矩阵,进行矢量操作,以加快代码运行速度. 下面记录几个常用的操作 ...

随机推荐

  1. HTML中一些基本的标签用法

    姓名输入框:<input type="text" value="默认有值"/> 密码输入框:<input type="text&qu ...

  2. min.css----全世界最快的CSS框架

      有一个CSS框架,叫min.css,它号称是全世界最快的. 难怪,它的代码就这一点. 你看它的页面例子,像Bootstrap,但比后者轻多了,它只是一些CSS样式,没有JavaScript代码. ...

  3. Sprint(第三天11.16)

    Sprint1第一阶段 1.类名:软件工程-第一阶段 2.时间:11.14-11.23 3.选题内容:点餐系统 4.团队博客地址:http://www.cnblogs.com/iamCarson/ 团 ...

  4. 剑指offer二:替换空格

    题目描述: 请实现一个函数,将一个字符串中的空格替换成"%20".例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 解题思路: ...

  5. js中对radio和checkbox是否选中的判断

    一.js判断checkbox 例如:<div class="checkbox" style="width: 150px;"> <label&g ...

  6. 正则神器,RegexBuddy

    解释 转换 测试匹配 使用帮助 正则图书馆 转为PHP案例 功能强大,虽然是英文的!挺不错的~

  7. C语言语法之运算符及优先级

    注:该内容整理自以下链接. http://blog.csdn.net/huangblog/article/details/8271791 表:C语言运算符及优先级 优先级 运算符 名称或含义 使用形式 ...

  8. Asp.Net_单点登录

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  9. kafka集群zookeeper集群详细配置

    http://www.cnblogs.com/luotianshuai/p/5206662.html

  10. 函数指针与指针函数以及typedef

    c难于理解的是指针,其魅力之处也是指针,函数方法结构,化繁为简可以理解为:返回值 函数名(形参表),具体来说: 返回值:1.可以为空void 2.基本数据类型char short int long f ...