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一样,将一幅图像看成一个矩阵,进行矢量操作,以加快代码运行速度. 下面记录几个常用的操作 ...
随机推荐
- 20160411002 经典SQL语句大全
一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备 ...
- Google 面试题和详解
Google的面试题在刁钻古怪方面相当出名,甚至已经有些被神化的味道.这个话题已经探讨过很多次,而科技博客 BusinessInsider这两天先是贴出15道Google面试题并一一给出了答案,其中不 ...
- Android中Bitmap和Drawable
一.相关概念 1.Drawable就是一个可画的对象,其可能是一张位图(BitmapDrawable),也可能是一个图形(ShapeDrawable),还有可能是一个图层(LayerDrawable) ...
- 浅谈 PHP 与手机 APP 开发(API 接口开发)
本文内容转载自:http://www.thinkphp.cn/topic/5023.html 这个帖子写给不太了解PHP与API开发的人一.先简单回答两个问题:1.PHP 可以开发客户端?答:不可以, ...
- logstash安装与基础用法
若是搭建elk,建议先安装好elasticsearch 来自官网,版本为2.3 wget -c https://download.elastic.co/logstash/logstash/packag ...
- 简单的计算最值的MapReduce程序
import java.io.IOException;import java.util.StringTokenizer;import java.util.*;import org.apache.had ...
- 从零开始学iPhone开发(3)——视图及控制器的使用
上一节我们分别使用IB和代码建立了两个视图并且熟悉了一些控件.这一节我们需要了解视图和视图的切换. 在iOS编程中,框架提供了很多视图,比如UIView,UIImageView, UIWebView等 ...
- 【leetcode❤python】 203. Remove Linked List Elements
#-*- coding: UTF-8 -*- # Definition for singly-linked list.# class ListNode(object):# def __init ...
- 。【自学总结 1】------3ds Max 界面
3ds Max 界面包含4部分(7区域) 4部分:菜单.控制工具.命令面板.窗口区 7区域: 1.标题栏:主要用于显示当前工作文件的名称,可以看到文件存储路径. 2.菜单栏:菜单中的命令如果带有省略号 ...
- consul的安装配置 一centos7环境
centos7上consul的安装--新手笔记 环境 我用的是centos7, 用的是vmware 一 安装系统后首先要设置ip ifconfig eth0 →查看IP 不过输出的信息多一些 ifco ...