码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-03-19 17:37:16      阅读:582      评论:0      收藏:0      [点我收藏+]

标签:按位运算   openCV   

按位运算

按位操作有: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 效果图:
技术分享图片

最终效果图:
技术分享图片

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

标签:按位运算   openCV   

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

(0)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!