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-04python+opencv 讀取文件夾下的所有圖像并批量保存ROI的方法
今天小編就為大家分享一篇python+opencv 讀取文件夾下的所有圖像并批量保存ROI的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01django連接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