赞
踩
目录
python3.7
opencv 我下载的是最新的
numpy
opencv-contrib-python (这是opencv贡献库,里面有很对的模块算法可以使用
生物领域、深度学习、人脸识别、文本等还有很多,宗旨很强大,大家可以自己去挖掘。
提醒一下,这个库在安装opencv时就安装了,不需要在安装拉
)
好了我们开使做正事叭,说实话,opencv自带模型还是不精确的,想要完美的识别——>匹配——>打码 还是需要很多优化的。
效果图:
上代码!
- import cv2 # opencv库
- ##马赛克
- def do_mosaic(frame, x, y, w, h, neighbor=9):
- """
- 马赛克的实现原理是把图像上某个像素点一定范围邻域内的所有点用邻域内左上像素点的颜色代替,这样可以模糊细节,但是可以保留大体的轮廓。
- :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): # 关键点0 减去neightbour 防止溢出
- for j in range(0, w - neighbor, neighbor):
- rect = [j + x, i + y, neighbor, neighbor]
- color = frame[i + y][j + x].tolist() # 关键点1 tolist
- left_up = (rect[0], rect[1])
- right_down = (rect[0] + neighbor - 1, rect[1] + neighbor - 1) # 关键点2 减去一个像素
- cv2.rectangle(frame, left_up, right_down, color, -1)
-
-
-
-
- # 读取图片
- image = cv2.imread('test.jpg')
- # 加载人脸模型库 请根据你xml实际
- face_model = cv2.CascadeClassifier("C:\\Users\\HUAWEI\\.conda\\envs\\learn\\Lib\\site-packages\\cv2\\data\\haarcascade_frontalface_default.xml")
-
- # 图片进行灰度处理
- gray = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)
- # 人脸检测
- faces = face_model.detectMultiScale(gray)
- # 标记人脸
- for (x, y, w, h) in faces:
- # 1.原始图片;2坐标点;3.矩形宽高 4.颜色值(RGB);5.线框
- do_mosaic(image, x, y, w, h,15)
- # 显示图片窗口
- cv2.imshow('faces', image)
- # 窗口暂停
- key = cv2.waitKey(0)
- if key == ord('s'): #英文状态下键盘按s键,会将图片保存至桌面
- font = cv2.FONT_HERSHEY_DUPLEX
- #参数依次为:涂鸦的图片、涂鸦的文字、位置、字体、字体大小、字体颜色、字体画笔粗细
- cv2.imwrite('girl3.png',image, [int(cv2.IMWRITE_JPEG_QUALITY),100])
- # 销毁窗口
- cv2.destroyAllWindows()

- import numpy as np
- import cv2 as cv
-
- #生成灰度图
- img = np.random.randint(0,256,size=[256,256],dtype=np.uint8)
-
- cv.imshow("Grayscale",img)
-
- #生成三通道的彩色图
- img = np.random.randint(0,256,size=[256,256,3],dtype=np.uint8)
- cv.imshow("RGB",img)
-
- cv.waitkey()
- cv.destroAllWindows()
- import cv2 as cv
- import numpy
-
-
- img = cv.imread("test.jpg")
-
- cv.imshow("test",img)
-
- #拆分bgr通道的值
- b = img[:,:,0]
- g = img[:,:,1]
- r = img[:,:,2]
-
- cv.imshow("btest",b)
- cv.imshow("btest",g)
- cv.imshow("btest",r)
-
- cv.waitkey()
- cv.destorAllWindows()
-
-
- #通过函数来拆分
-
- img = cv.imread("test.jpg")
-
- cv.imshow("test",img)
-
- b,g,r = cv.split(img)
- b = img[:,:,0]
- g = img[:,:,1]
- r = img[:,:,2]
-
- cv.imshow("btest",b)
- cv.imshow("btest",g)
- cv.imshow("btest",r)
-
- cv.waitkey()
- cv.destorAllWindows()

- import cv2 as cv
- import numpy
-
-
- img = cv.imread("test.jpg")
-
- cv.imshow("test",img)
-
- print(img.shape)
- #通过shape可以知道,图像的行、列、通道数,如果时灰度或者二值 ,我们就可以通过它来区分
-
- print(img.size)
- #返回图像的像素数目,其值为 行*列*通道数
-
- print(img.dtype)
- #查看图像类型

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。