python使用opencv實現(xiàn)馬賽克效果示例
本文實例講述了python使用opencv實現(xiàn)馬賽克效果。分享給大家供大家參考,具體如下:
最近要實現(xiàn)opencv視頻打馬賽克,在網(wǎng)上找了一下基本是C++的實現(xiàn),好在原理一樣,下面給出python實現(xiàn)。
原理和注意點,我都寫在注釋里了
import cv2
##馬賽克
def do_mosaic(frame, x, y, w, h, neighbor=9):
"""
馬賽克的實現(xiàn)原理是把圖像上某個像素點一定范圍鄰域內(nèi)的所有點用鄰域內(nèi)左上像素點的顏色代替,這樣可以模糊細(xì)節(jié),但是可以保留大體的輪廓。
:param frame: opencv frame
:param int x : 馬賽克左頂點
:param int y: 馬賽克右頂點
:param int w: 馬賽克寬
:param int h: 馬賽克高
:param int neighbor: 馬賽克每一塊的寬
"""
fh, fw = frame.shape[0], frame.shape[1]
if (y + h > fh) or (x + w > fw):
return
for i in range(0, h - neighbor, neighbor): # 關(guān)鍵點0 減去neightbour 防止溢出
for j in range(0, w - neighbor, neighbor):
rect = [j + x, i + y, neighbor, neighbor]
color = frame[i + y][j + x].tolist() # 關(guān)鍵點1 tolist
left_up = (rect[0], rect[1])
right_down = (rect[0] + neighbor - 1, rect[1] + neighbor - 1) # 關(guān)鍵點2 減去一個像素
cv2.rectangle(frame, left_up, right_down, color, -1)
im = cv2.imread('test.jpg', 1)
do_mosaic(im, 219, 61, 460 - 219, 412 - 61)
while 1:
k = cv2.waitKey(10)
if k == 27:
break
cv2.imshow('mosaic', im)
原圖為:

效果如下:

圖片來自網(wǎng)上,如有侵權(quán),聯(lián)系刪除。
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python圖片操作技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對大家Python程序設(shè)計有所幫助。
相關(guān)文章
pandas讀取excel統(tǒng)計空值數(shù)量錯誤的解決方法
pd.read_excel()讀取excel數(shù)據(jù)后,用pd.isnull().sum()統(tǒng)計空值數(shù)量不對,本文主要介紹了pandas讀取excel統(tǒng)計空值數(shù)量錯誤的解決方法,感興趣的可以了解一下2024-04-04
python+opencv 讀取文件夾下的所有圖像并批量保存ROI的方法
今天小編就為大家分享一篇python+opencv 讀取文件夾下的所有圖像并批量保存ROI的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01
django連接Mysql中已有數(shù)據(jù)庫的方法詳解
眾所周知Django較為適合原生開發(fā),即通過該框架搭建一個全新的項目,通過在修改models.py來創(chuàng)建新的數(shù)據(jù)庫表,下面這篇文章主要給大家介紹了關(guān)于django連接Mysql中已有數(shù)據(jù)庫的相關(guān)資料,需要的朋友可以參考下2022-05-05
解決Keras中循環(huán)使用K.ctc_decode內(nèi)存不釋放的問題
這篇文章主要介紹了解決Keras中循環(huán)使用K.ctc_decode內(nèi)存不釋放的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06

