日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

Python&OpenCV自动人脸打马赛克&调色系统[源码&UI操作界面&部署教程]

發(fā)布時(shí)間:2023/12/20 windows 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python&OpenCV自动人脸打马赛克&调色系统[源码&UI操作界面&部署教程] 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.視頻演示:

[項(xiàng)目分享]Python&OpenCV自動(dòng)人臉打馬賽克&調(diào)色系統(tǒng)[源碼&UI操作界面&部署教程]

2.圖片演示:

3.圖像顏色檢索&替換:

4.馬賽克分類:

使用opencv庫(kù)中的haarcascade_frontalface_default.xml進(jìn)行人臉檢測(cè)。
1、使用高斯噪聲進(jìn)行模糊處理。
2、使用高斯濾波函數(shù),在相應(yīng)的位置處進(jìn)行模糊處理。

高斯噪聲,得到的馬賽克為多重點(diǎn)點(diǎn)。原來(lái)的視頻命名為output.avi,代碼編譯后保存的視頻命名為1111.avi。記得修改自己的文件路徑哦。

import numpy as np import cv2 as cvcap = cv.VideoCapture('output.avi') face_cascade = cv.CascadeClassifier("/usr/share/opencv/haarcascades/haarcascade_frontalface_default.xml") #eye_cascade = cv.CascadeClassifier("/usr/share/opencv/haarcascades/haarcascade_eye.xml")#眼睛fourcc = cv.VideoWriter_fourcc(*'XVID') out = cv.VideoWriter('1111.avi',fourcc, 20.0, (640,480))def facedetection(img):# gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)faces = face_cascade.detectMultiScale(img, 1.3, 5)for (x, y, w, h) in faces:#方框img = cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)roi_gray = gray[y:y+h, x:x+w]#圓框#cv.circle(img, (int(x+w/2), int(y+h/2)), 100, (0, 0, 255), 2)return imgwhile True:# 讀取當(dāng)前幀ret, frame = cap.read()# 轉(zhuǎn)為灰度圖像gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)Rects = face_cascade.detectMultiScale(gray, scaleFactor = 1.2, minNeighbors = 3, minSize = (32,32))if len(Rects) > 0: for Rect in Rects: x, y, w, h = Rect # 打碼:使用高斯噪聲替換識(shí)別出來(lái)的人眼所對(duì)應(yīng)的像素值frame[y+10:y+h-10,x:x+w,0]=np.random.normal(size=(h-20,w))frame[y+10:y+h-10,x:x+w,1]=np.random.normal(size=(h-20,w))frame[y+10:y+h-10,x:x+w,2]=np.random.normal(size=(h-20,w))im = facedetection(frame)out.write(im)cap.release() out.release() cv2.destroyAllWindows()

圖片是由一個(gè)三維數(shù)組,打馬賽克就是把特定區(qū)域的值替換為其他值,項(xiàng)目在做的過(guò)程中經(jīng)過(guò)一次升級(jí),最開(kāi)始用的是高斯馬賽克,后來(lái)參考該博客,升級(jí)為和其他軟件手工打的馬賽克一樣的樣式正規(guī)馬賽克

高斯馬賽克

特定區(qū)域值替換為高斯分布數(shù)值,可以利用numpy中的np.random.normal(size=(h,w))來(lái)生成一些隨機(jī)的數(shù)值,然后進(jìn)行替換即可

正規(guī)馬賽克

馬賽克的實(shí)現(xiàn)原理是把圖像上某個(gè)像素點(diǎn)一定范圍鄰域內(nèi)的所有點(diǎn)用鄰域內(nèi)左上像素點(diǎn)的顏色代替,這樣可以模糊細(xì)節(jié),但是可以保留大體的輪廓。就是用左上角的那個(gè)值,來(lái)替換右下方一個(gè)小方塊的值,逐步進(jìn)行替換即可。

5.代碼實(shí)現(xiàn):

高斯馬賽克

import cv2 import numpy as npface_location=[430,500,730,870] #x1,y1,x2,y2 x1,y1為人臉左上角點(diǎn);x2,y2為人臉右下角點(diǎn) img=cv2.imread('./tongliya.jpg') #opencv讀取的是BGR數(shù)組##高斯馬賽克 def normal_mosaic(img, x1, y1, x2, y2):img[y1:y2, x1:x2, 0] = np.random.normal(size=(y2-y1, x2-x1))img[y1:y2, x1:x2, 1] = np.random.normal(size=(y2-y1, x2-x1))img[y1:y2, x1:x2, 2] = np.random.normal(size=(y2-y1, x2-x1))return imgx1=face_location[0] y1=face_location[1] x2=face_location[2] y2=face_location[3] img_mosaic=normal_mosaic(img, x1, y1, x2, y2) cv2.imwrite('img_mosaic_normal.jpg',img_mosaic)

正規(guī)馬賽克

import cv2 import numpy as npface_location=[430,500,730,870] #x1,y1,x2,y2 x1,y1為人臉左上角點(diǎn);x2,y2為人臉右下角點(diǎn) img=cv2.imread('./tongliya.jpg') #opencv讀取的是BGR數(shù)組#正規(guī)馬賽克 def do_mosaic(img, x, y, w, h, neighbor=9):""":param rgb_img:param int x : 馬賽克左頂點(diǎn):param int y: 馬賽克左頂點(diǎn):param int w: 馬賽克寬:param int h: 馬賽克高:param int neighbor: 馬賽克每一塊的寬"""for i in range(0, h , neighbor): for j in range(0, w , neighbor):rect = [j + x, i + y]color = img[i + y][j + x].tolist() # 關(guān)鍵點(diǎn)1 tolistleft_up = (rect[0], rect[1])x2=rect[0] + neighbor - 1 # 關(guān)鍵點(diǎn)2 減去一個(gè)像素y2=rect[1] + neighbor - 1if x2>x+w:x2=x+wif y2>y+h:y2=y+hright_down = (x2,y2) cv2.rectangle(img, left_up, right_down, color, -1) #替換為為一個(gè)顏值值return imgx=face_location[0] y=face_location[1] w=face_location[2]-face_location[0] h=face_location[3]-face_location[1] img_mosaic=do_mosaic(img, x, y, w, h, neighbor=15) cv2.imwrite('img_mosaic.jpg',img_mosaic)

完整源碼&環(huán)境部署視頻教程&自定義UI界面

參考博客《Python&OpenCV自動(dòng)人臉打馬賽克&調(diào)色系統(tǒng)[源碼&UI操作界面&部署教程]》

6.參考文獻(xiàn):


  • [1]基于Adaboost的安全帶檢測(cè)系統(tǒng)[J]. 陳雁翔,李賡. 電子測(cè)量技術(shù). 2015(04)
  • [2]基于高斯混合模型的運(yùn)動(dòng)目標(biāo)檢測(cè)方法研究[J]. 馬德智,李巴津,董志學(xué). 電子測(cè)量技術(shù). 2013(10)
  • [3]基于超球支持向量機(jī)的多姿態(tài)協(xié)同人臉檢測(cè)[J]. 滕少華,陳海濤,張巍. 計(jì)算機(jī)應(yīng)用. 2013(07)
  • [4]基于LBP算子和類覆蓋捕獲圖的人臉檢測(cè)算法[J]. 趙海峰,孫姍姍,閆偉紅,王宜龍,孫登第. 數(shù)學(xué)的實(shí)踐與認(rèn)識(shí). 2013(07)
  • [5]基于類Haar特征與級(jí)聯(lián)AdaBoost算法的防震錘識(shí)別[J]. 金立軍,閆書佳,劉源. 系統(tǒng)仿真學(xué)報(bào). 2012(09)
  • [6]改進(jìn)的高斯膚色模型及其在人臉檢測(cè)中的應(yīng)用[J]. 劉春生,常發(fā)亮,陳振學(xué),李爽. 儀器儀表學(xué)報(bào). 2012(05)
  • [7]復(fù)雜光照下的人臉膚色檢測(cè)方法[J]. 李全彬,王小明,劉錦高,李明. 計(jì)算機(jī)應(yīng)用. 2010(06)
  • [8]復(fù)雜背景和光照多變的人臉檢測(cè)方法[J]. 李全彬,孫巧榆,劉錦高,李明. 計(jì)算機(jī)工程與應(yīng)用. 2009(18)

總結(jié)

以上是生活随笔為你收集整理的Python&OpenCV自动人脸打马赛克&调色系统[源码&UI操作界面&部署教程]的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。