【AI基础】python:openCV——图像算术运算(2):按位运算

按位运算

按位操作有:AND,OR,NOT,XOR 等。当我们提取图像的 一部分,选择非矩形 ROI 时这些操作会很有用,常用于Logo 投射。

本节操作思路:
通过 threshold 函数将图片 固定阈值二值化,
定义:图像的二值化,就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的只有黑和白的视觉效果。
一幅图像包括目标物体、背景还有噪声,要想从多值的数字图像中直接提取出目标物体,常用的方法就是设定一个阈值T,用T将图像的数据分成两部分:大于T的像素群和小于T的像素群。这是研究灰度变换的最特殊的方法,称为图像的二值化(Binarization)。

import cv2
import numpy as np

img = cv2.imread(‘1.jpg‘)
img2  = cv2.imread(‘2c.jpg‘)

rows,cols,channels = img2.shape
roi = img[0:rows, 0:cols]

GrayImage=cv2.cvtColor(img2,cv2.COLOR_BGR2GRAY)  

# 中值滤波
GrayImage= cv2.medianBlur(GrayImage,5)  

# mask_bin 是黑白掩膜
ret,mask_bin  = cv2.threshold(GrayImage,127,255,cv2.THRESH_BINARY)  

#mask_inv 是反色黑白掩膜
mask_inv = cv2.bitwise_not(mask)

# 黑白掩膜 和 大图切割区域 取和
img1_bg = cv2.bitwise_and(roi,roi,mask = mask_bin)

#反色黑白掩膜 和 logo 取和
img2_fg = cv2.bitwise_and(img2,img2,mask = mask_inv)

dst = cv2.add(img1_bg,img2_fg)
img[0:rows, 0:cols ] = dst

cv2.imshow(‘GrayImage‘,mask_bin)
cv2.waitKey(0)
cv2.destroyAllWindows()

为便于理解,贴出过程图

mask_bin 效果图:

mask_inv 效果图:

img1_bg 和 img2_fg 效果图:

最终效果图:

原文地址:http://blog.51cto.com/devops2016/2088574

时间: 2024-10-11 04:22:48

【AI基础】python:openCV——图像算术运算(2):按位运算的相关文章

python+opencv 图像预处理

一 python 生成随机字符串序列+ 写入到图片上 from PIL import Image,ImageDraw,ImageFont import numpy as np import random import string import cv2 # 生成随机字符串 for i in range(1,10000): strnum = random.randint(2,10) ran_str = "".join(random.sample(string.ascii_letters

python opencv图像阈值处理

######################################################### 学习函数 cv2.threshold, cv2.adaptiveThreshold等等 简单阈值: 原理很直接,如果像素值大于一个阈值,那么久将它赋值一个数,否则赋值成另外一个数.函数使用cv2.threshold 第一参数是原图像,而且这个图像应该是一个灰度图像.第二个参数用来区分像素的阈值.第三个参数是像素值大于阈值时的上限.opencv提供了不同样式的阈值并且由第四个参数决定

python+OpenCV 图像滤波

输入图像为添加椒盐噪声的图像 img=cv2.imread('noise.jpg') img=PepperandSalt(img,0.2) # 均值滤波 img_mean = cv2.blur(img, (5,5)) # 高斯滤波 img_Guassian = cv2.GaussianBlur(img,(5,5),0) # 中值滤波 img_median = cv2.medianBlur(img, 5) # 双边滤波 img_bilater = cv2.bilateralFilter(img,9

Python 进制转换、位运算

一.进制转换 编程用十进制,十进制转换为二进制.八进制.十六进制 In [135]: bin(23) Out[135]: '0b10111' In [136]: oct(23) Out[136]: '0o27' In [137]: hex(23) Out[137]: '0x17' 也可以直接反向获取十进制 In [146]: 0b10111 Out[146]: 23 In [147]: 0o27 Out[147]: 23 In [148]: 0x17 Out[148]: 23 也可以用int函数

python+opencv实现机器视觉基础技术(边缘提取,图像滤波,边缘检测算子,投影,车牌字符分割)

目录 一:边缘提取 1.对图像进行阈值分割并反色 2.边缘提取 二:图像滤波 1.读取原图 2.均值滤波 3.中值滤波 4.高斯滤波 5.高斯边缘检测 三:边缘检测算子 1.显示原图 2.对图像进行反色 3.对图像用sobel方法进行边缘检测 4.对图像用robert方法进行边缘检测 四:投影 1.显示原图 2.垂直方向投影 3.水平方向投影 五:车牌字符分割 1.读取原图 2.灰度转换 3.反色 4.阈值分割 5.投影 6.字符识别匹配分割 ??机器视觉是人工智能正在快速发展的一个分支.简单说

Opencv python图像处理-图像相似度计算

一.相关概念 一般我们人区分谁是谁,给物品分类,都是通过各种特征去辨别的,比如黑长直.大白腿.樱桃唇.瓜子脸.王麻子脸上有麻子,隔壁老王和儿子很像,但是儿子下巴涨了一颗痣和他妈一模一样,让你确定这是你儿子. 还有其他物品.什么桌子带腿.镜子反光能在里面倒影出东西,各种各样的特征,我们通过学习.归纳,自然而然能够很快识别分类出新物品. 而没有学习训练过的机器就没办法了. 但是图像是一个个像素点组成的,我们就可以通过不同图像之间这些差异性就判断两个图的相似度了.其中颜色特征是最常用的,(其余常用的特

AI新时代-大神教你使用python+Opencv完成人脸解锁(附源码)

好吧,伙计们,我回来了.说我拖更不写文章的可以过来用你的小拳拳狠命地捶我胸口.... 那么今天我们来讲关于使用python+opencv+face++来实现人脸验证及人脸解锁.代码量同样不多,你可以将这些代码运用在其它一些智能领域,如智能家居,进门的时候判断你是谁,也可以加入机器学习判断来的人是客人还是熟人.在讲之前我们会先适当的拓扑一下关于人脸识别的知识点.OK废话少说下面开始正是话题. 解锁原理: 原理呢,其实很简单,没有那么复杂难懂(当然除了官方语言之外).我们先来通俗的说一下利用Face

.NET + OpenCV & Python + OpenCV 配置

最近需要做一个图像识别的GUI应用,权衡了Opencv+ 1)QT,2)Python GUI,3).NET后选择了.NET... 本文给出C#+Opencv和Python+Opencv的相应参考,节省大家时间. (一)C#.NET + Opencv 1)下载并安装Emgu库(for opencv on .NET env) Download @ http://sourceforge.net/projects/emgucv/ 2)How to use opencv on C#? VS上配置Emgu(

Opencv 图像读取与保存问题

本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/49737357 本文仅对 Opencv图像读取与保存进行阐述,重在探讨图像读取与保存过程中应注意的细节问题. 1 图像读取 首先看一下,imread函数的声明: // C++: Mat based Mat imread(const string& filename, int flags=1 ); // C: IplImage based