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一样,将一幅图像看成一个矩阵,进行矢量操作,以加快代码运行速度. 下面记录几个常用的操作 ...
随机推荐
- python学习之if语句
1.if条件表达式判断 ##判断条件是true or false var1=10 if var1: print("true") print(var1) else: print(&q ...
- 简单的计算最值的MapReduce程序
import java.io.IOException;import java.util.StringTokenizer;import java.util.*;import org.apache.had ...
- [问题2014A04] 复旦高等代数 I(14级)每周一题(第六教学周)
[问题2014A04] 设 \(A,B,C,D\) 均为 \(n\) 阶方阵. (1) 若 \(A^2=A\), \(B^2=B\), \((A+B)^2=A+B\), 证明: \(AB=BA=0\ ...
- 20161106PM-Fiddler
1. 设置Fidder使之支持HTTPS协议 Tools->Fiddler Options->HTTPS->勾上Decrypt HTTPS traffic->OK 2. 断点 ...
- XAF学习资源整合大全
近期有很多XAF初学者与我联系,我多数时间在重复很多入门问题,所以决定整理一篇XAF资源列表,方便大家查找资料,也请知晓其他资源的人留言或与我联系,我将新资源追加到本篇文章中,方便更多人. 一.本博客 ...
- 《BI那点儿事》Cube的存储
关系 OLAP (ROLAP)ROLAP的基本数据和聚合数据均存放在关系数据库中:ROLAP 存储模式使得分区的聚合存储在关系数据库的表(在分区数据源中指定)中.但是,可为分区数据使用 ROLAP 存 ...
- switch多分支语句简析
在编程中一个常见问题就是检测一个变量是否符合某个条件,switch以一个简单明了的方式来实现类似于"多选一"的选择,语法格式如下: /*switch首先计算表达式的值,如果表达式的 ...
- UI里的UIActionSheet按钮
1.效果图:分别为有短信分享 无短信分享 -(void)viewDidLoad{ //添加按钮 UIButton *share ...
- [笔记]CSS样式声明顺序
来自Bootstrap中文网编程规范 相关的属性声明应当归为一组,并按照下面的顺序排列: Positioning Box model Typographic Visual .declaration-o ...
- Yii 添加Input时间插件
1.首先引入时间组件的JS文件,组件可以在网上下载到没有的可以到网上去下载 <script language="javascript" type="text/jav ...