Python OpenCV —— bitwise
关于图像的位操作,目的是为了将一个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的更多相关文章
- 搭建基于python +opencv+Beautifulsoup+Neurolab机器学习平台
搭建基于python +opencv+Beautifulsoup+Neurolab机器学习平台 By 子敬叔叔 最近在学习麦好的<机器学习实践指南案例应用解析第二版>,在安装学习环境的时候 ...
- .NET + OpenCV & Python + OpenCV 配置
最近需要做一个图像识别的GUI应用,权衡了Opencv+ 1)QT,2)Python GUI,3).NET后选择了.NET... 本文给出C#+Opencv和Python+Opencv的相应参考,节省 ...
- RPi 2B python opencv camera demo example
/************************************************************************************** * RPi 2B pyt ...
- Python+OpenCV图像处理(一)
Python+OpenCV图像处理(一): 读取,写入和展示图片 调用摄像头拍照 调用摄像头录制视频 1. 读取.写入和展示图片 图像读入:cv2.imread() 使用函数cv2.imread() ...
- python opencv show图片,debug技巧
debug的时候可以直接把图片画出来debug. imshow函数就是python opencv的展示图片的函数,第一个是你要起的图片名,第二个是图片本身.waitKey函数是用来展示图片多久的,默认 ...
- Python+OpenCV图像处理(一)——读取显示一张图片
先在此处先声明,后面学习python+opencv图像处理时均参考这位博主的博文https://blog.csdn.net/u011321546/article/category/7495016/2? ...
- Python+opencv 图像拼接
1.http://www.cnblogs.com/skyfsm/p/7411961.html ,给出了很好地拼接算法实现 2.由于不是Python的,所以简单做了一些翻译转成Python+opencv ...
- 【python+opencv】直线检测+圆检测
Python+OpenCV图像处理—— 直线检测 直线检测理论知识: 1.霍夫变换(Hough Transform) 霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进 ...
- python - opencv 的一些小技巧备忘
python - opencv 的一些小技巧备忘 使用python-opencv来处理图像时,可以像matlab一样,将一幅图像看成一个矩阵,进行矢量操作,以加快代码运行速度. 下面记录几个常用的操作 ...
随机推荐
- apache和tomcat有什么不同,为什么要整合apache 和tomcat?
1. Apache是web服务器,Tomcat是应用(java)服务器,它只是一个servlet容器,是Apache的扩展.2. Apache和Tomcat都可以做为独立的web服务器来运行,但是Ap ...
- HDU 4944 FSF’s game 一道好题
FSF’s game Time Limit: 9000/4500 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Tota ...
- Android动画View Animation
Animations 一.Animations介绍 Animations是一个实现android UI界面动画效果的API,Animations提供了一系列的动画效果,可以进行旋转.缩放.淡入淡出等, ...
- winform在不同电脑分辨率
private void InitializeComponent() { //设定按字体来缩放控件 this.AutoScaleMode = System.Windows.Forms.AutoScal ...
- linux atom 不支持中文
linux atom 不支持中文 1.首先在ubuntu下安装泉驿正黑字体 sudo apt-get install ttf-wqy-* 2.Edit > Preferences > Se ...
- Jquery 复习练习(01)
Jquery 复习练习 window.onload = function() {} == $(function() {}); 千万注意:js对象和jq对象的区别,这也是常常犯的错误 js对象举例: w ...
- 初学画布canvas的chapter1
——这篇读后感是我阅读<写给Web开发人员看的HTML5教程>一书中的第5章画布后的小小看法,由于编程实力有限,很多效果病没有一一去实现,所以只是停留在纸上谈兵的阶段. 画布(canvas ...
- 【转载】C++ 与“类”有关的注意事项总结(十二):按成员初始化 与 按成员赋值
原文:C++ 与"类"有关的注意事项总结(十二):按成员初始化 与 按成员赋值 一.按成员初始化(与构造函数和拷贝构造函数有关) 用一个类对象初始化另一个类对象,比如: Accou ...
- Winform 菜单和工具栏控件
MenuStrip--菜单工具 一定会出现在窗体最上面 设置热键:在编辑的时候输入(&F) 设置快捷键:选中菜单项--右键属性--ShortCutKeys--设置快捷键 ...
- 滚动RollUp、压缩
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...