Opencv 馬賽克和毛玻璃效果與圖片融合的實現(xiàn)
更新時間:2021年11月19日 16:52:08 作者:il_持之以恒_li
這篇文章主要為大家詳細介紹了通過OpenCV實現(xiàn)馬賽克和毛玻璃濾鏡效果與圖片的融合,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
1.馬賽克效果
馬賽克的基本原理就是,用某一個區(qū)域的某一個像素點替代這個區(qū)域所有的像素點,從而導致圖片出現(xiàn)模糊的效果,如下:

import cv2
# 馬賽克效果
img = cv2.imread(filename='../anqila21.jpg',flags=1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
flag = 2 # 系數(shù),系數(shù)越小,馬賽克的效果越不明顯
for m in range(26,height):
for n in range(140,880):
if m%flag==0 and n%flag==0:
for i in range(0,flag):
for j in range(0,flag):
(b,g,r) = img[m,n]
img[i+m,j+n] = (b,g,r)
cv2.imshow('dst',img)
cv2.waitKey(0)


2. 毛玻璃效果
import cv2
import numpy as np
import random
# 毛玻璃效果
img = cv2.imread(filename='../anqila21.jpg',flags=1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
dst = np.zeros((height,width,3),np.uint8)
for i in range(height-8):
for j in range(width-8):
index = int(random.random()*8) # 生成0-8之間的隨機數(shù)(不包括8)
dst[i, j] = img[i+index,j+index]
cv2.imshow('dst',dst)
cv2.waitKey(0)

3. 圖片的融合
就是將兩張圖片融合到一張圖片上,即可看到第一張圖片的效果,也可以看到第二張圖片的效果。
import cv2
img_1 = cv2.imread(filename='../anqila21.jpg',flags=1)
img_2 = cv2.imread(filename='../huanghe.jpg',flags=1)
imgInfo = img_1.shape
height = imgInfo[0]
width = imgInfo[1]
# roi
roi = 0.5
dst = cv2.addWeighted(img_1,roi,img_2,(1-roi),0)
cv2.imshow('dst',dst)
cv2.waitKey(0)

算法實現(xiàn)
import cv2
import numpy as np
img_1 = cv2.imread(filename='../anqila21.jpg',flags=1)
img_2 = cv2.imread(filename='../huanghe.jpg',flags=1)
imgInfo = img_1.shape
height = imgInfo[0]
width = imgInfo[1]
# roi
roi = 0.5
dst = np.zeros((height,width,3),np.uint8)
for i in range(height):
for j in range(width):
(b1,g1,r1) = img_1[i,j]
(b2,g2,r2) = img_2[i,j]
dst[i,j] = (int(b1*roi+b2*(1-roi)),int(g1*roi+g2*(1-roi)),int(r1*roi+r2*(1-roi)))
cv2.imshow('dst',dst)
cv2.waitKey(0)

以上就是Opencv 馬賽克和毛玻璃效果與圖片融合的實現(xiàn)的詳細內容,更多關于Opencv 的資料請關注腳本之家其它相關文章!
相關文章
C語言實現(xiàn)輸入兩個數(shù)字將其按從小到大輸出的方法
這篇文章主要介紹了C語言實現(xiàn)輸入兩個數(shù)字將其按從小到大輸出的方法,本文通過代碼講解的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-04-04
C++函數(shù)指針+對象指針+this指針+指向類靜態(tài)和非靜態(tài)成員的指針
這篇文章主要介紹了C++函數(shù)指針+對象指針+this指針+指向類靜態(tài)和非靜態(tài)成員的指針,函數(shù)指針定義和賦值的語法指其中數(shù)據(jù)類型代表指向函數(shù)的返回類型,形參表為指向函數(shù)的形參表,更多相關資料需要的朋友可以參考一下下面文章內容2022-03-03
關于VS2022不能使用<bits/stdc++.h>的解決方案(萬能頭文件)
#include<bits/stdc++.h>包含了目前 C++ 所包含的所有頭文件,又稱萬能頭文件,那么如何在VS2022中使用萬能頭呢?下面小編給大家代理了關于VS2022不能使用<bits/stdc++.h>的解決方案(萬能頭文件),感興趣的朋友一起看看吧2022-03-03

