【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 效果圖:
【AI基礎】python:openCV——圖像算術運算(2):按位運算

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

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章