【AI基礎】python:openCV——圖像算術運算(2):按位運算

按位運算 python

按位操做有:AND,OR,NOT,XOR 等。當咱們提取圖像的 一部分,選擇非矩形 ROI 時這些操做會頗有用,經常使用於Logo 投射。ide

本節操做思路:
經過 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()

爲便於理解,貼出過程圖3d

mask_bin 效果圖:
【AI基礎】python:openCV——圖像算術運算(2):按位運算code

mask_inv 效果圖:
【AI基礎】python:openCV——圖像算術運算(2):按位運算blog

img1_bg 和 img2_fg 效果圖:
【AI基礎】python:openCV——圖像算術運算(2):按位運算圖片

最終效果圖:
【AI基礎】python:openCV——圖像算術運算(2):按位運算it

相關文章
相關標籤/搜索