Opencv 馬賽克和毛玻璃效果與圖片融合的實(shí)現(xiàn)
1.馬賽克效果
馬賽克的基本原理就是,用某一個(gè)區(qū)域的某一個(gè)像素點(diǎn)替代這個(gè)區(qū)域所有的像素點(diǎn),從而導(dǎo)致圖片出現(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之間的隨機(jī)數(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)
算法實(shí)現(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 馬賽克和毛玻璃效果與圖片融合的實(shí)現(xiàn)的詳細(xì)內(nèi)容,更多關(guān)于Opencv 的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
C語(yǔ)言實(shí)現(xiàn)輸入兩個(gè)數(shù)字將其按從小到大輸出的方法
這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)輸入兩個(gè)數(shù)字將其按從小到大輸出的方法,本文通過(guò)代碼講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04C++函數(shù)指針+對(duì)象指針+this指針+指向類(lèi)靜態(tài)和非靜態(tài)成員的指針
這篇文章主要介紹了C++函數(shù)指針+對(duì)象指針+this指針+指向類(lèi)靜態(tài)和非靜態(tài)成員的指針,函數(shù)指針定義和賦值的語(yǔ)法指其中數(shù)據(jù)類(lèi)型代表指向函數(shù)的返回類(lèi)型,形參表為指向函數(shù)的形參表,更多相關(guān)資料需要的朋友可以參考一下下面文章內(nèi)容2022-03-03C語(yǔ)言如何在字符數(shù)組中插入一個(gè)字符
這篇文章主要介紹了C語(yǔ)言如何在字符數(shù)組中插入一個(gè)字符,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06C語(yǔ)言實(shí)現(xiàn)小貓釣魚(yú)算法
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)小貓釣魚(yú)算法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01關(guān)于VS2022不能使用<bits/stdc++.h>的解決方案(萬(wàn)能頭文件)
#include<bits/stdc++.h>包含了目前 C++ 所包含的所有頭文件,又稱(chēng)萬(wàn)能頭文件,那么如何在VS2022中使用萬(wàn)能頭呢?下面小編給大家代理了關(guān)于VS2022不能使用<bits/stdc++.h>的解決方案(萬(wàn)能頭文件),感興趣的朋友一起看看吧2022-03-03