[Python & OpenCV]人脸识别并把人脸打马赛克

人脸识别并把人脸打马赛克

def face_msk():
    capture = cv2.VideoCapture(0)           #打开摄像头(0/1/2代表摄像头编号0.1.2)
    while(True):
        ret,frame = capture.read()          #读一帧
        frame = cv2.flip(frame,1)           #镜头翻转(1水平,0垂直,-1水平垂直)
        gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)#人脸识别必须转化为灰阶图像
        face_cascade = cv2.CascadeClassifier(r"C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\Lib\site-packages\cv2\data\haarcascade_frontalface_default.xml")#创建一个级联分类器对象(包含大数据训练的人脸特征) 
        faces = face_cascade.detectMultiScale(gray,scaleFactor = 1.07,minNeighbors = 5) #(图,每次图像缩小比例(根据人脸大小),每个目标检测次数阈值 )
        for x,y,w,h, in faces:
            #print("x = %d,y = %d,w = %d,h = %d"%(x,y,w,h))
            for m in range(y,y + h):#y
                for n in range(x,x + w):#x
                    if m%10 == 0 and n%10 == 0:	# 将10 * 10的方格内的像素颜色,设置与[m,n]点颜色相同
                        for i in range(10):
                            for j in range(10):
                                (b,g,r) = frame[m,n]
                                frame[i+m,j+n] = (b,g,r)
            cv2.imshow("1",frame)
            c = cv2.waitKey(2)
            if c == 27: #ESC按键
                cv2.destroyAllWindows()
                break

效果如图
效果

发布了17 篇原创文章 · 获赞 4 · 访问量 383

猜你喜欢

转载自blog.csdn.net/qq_34916678/article/details/105290687