一 . opencv是什么及其作用?

  OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法(百度百科)。

  鉴于本人的工作环境主要是采用python作为开发工具,故本篇博客是基于python来做的学习记录。

二 . 环境依赖和opencv包

  •   环境:python3.65+windows10
  •   包:opencv-python、opencv-contrib-python(pip安装)
  •   说明:装好python以后,直接在cmd里面使用pip install 即可,若遇见下载速度过慢或超时的情况,建议换个pip源,使用方式如:pip install package -i  https://pypi.tuna.tsinghua.edu.cn/simple/

1. 读取图片,将其转换为数组

from matplotlib import pyplot as pyl
import cv2
import numpyimg = cv2.imread("cat.jpg")  #img是一个numpy.ndarray对象,默认是以BGR三通道读取图片数据(三维数组)
#img_gray = cv2.imread("cat.jpg",cv2.IMREAD_GRAYSCALE)   以灰度图像方式读取图片数据(二维数组)

2. 数组数据转换

img_BGR = cv2.imread("cat.jpg")
img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)  #将其转换为灰度的二维数组数据

3. 数组数据窗口展示

img = cv2.imread("cat.jpg")cv2.imshow("IMage",img)
cv2.waitKey(0)          # 按任意键关闭窗口,cv2.waitKey(1000) 延时一秒关闭窗口
cv2.destroyAllWindows()

4. 图像保存

cv2.imwrite("mycat.jpg",img)

5. 图像的截取

# 其实本质就是对np数组进行操作
img = cv2.imread("cat.jpg")
cv2.imshow("IMage",img[:100,:200])  # 取前100行,前200列的像素作为图像展示

 6. BGR数据切片

img = cv2.imread("cat.jpg")# 切片
b,g,r = cv2.split(img)   # 得到各自颜色通道的二维数组数据# 合并
img = cv2.merge(b,g,r)

 7 同样大小的数组像素值运算

img = cv2.imread("cat.jpg")
img_2 = numpy.copy(img)# np相加,像素值只要超过255,就减掉255,比如257,结果就为2
print(img[:3,:3,0]+img_2[:3,:3,0] ) # cv2相加,像素值超过255,就等于255
print(cv2.add(img[:3,:3,0],img_2[:3,:3,0]))

8 图片的融合

img_cat = cv2.imread("cat.jpg")
img_dog = cv2.imread("dog.jpg")ret = cv2.addWeighted(img_cat,0.2,img_dog,0.8,0)    # 数据后面的值决定图片融合和所占的权重
cv2.imshow("IMage",ret)
cv2.waitKey(0)          # 按任意键关闭窗口,cv2.waitKey(1000) 延时一秒关闭窗口
cv2.destroyAllWindows()# 如果图片大小不一致,使用cv2.resize(img_xx,(300,200))  ————》转换为np.shape = 200,300的数组

9 图片的比例缩放

img_cat = cv2.imread("cat.jpg")ret = cv2.resize(img_cat,(0,0),fx=3,fy=1) #横向拉长三倍
ret2 = cv2.resize(img_cat,(0,0),fx=3,fy=3) #图片扩大三

【实例】通过训练   进行人脸识别:

import numpy as npimport cv2import os
filenames = os.listdir('./faces/')
faces = []
# targerts == labels标签
targets = []
for f in filenames:for fn in os.listdir('./faces/%s'%(f)):faces.append(cv2.imread('./faces/%s/%s'%(f,fn)))targets.append(f.split('.')[0])
faces = np.asarray(faces)
targets = np.asarray(targets)
len(targets)
#60/
labels = np.asarray([i for i in range(1,7)]*10)
labels.sort()
labels
array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3,3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5,5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6])
# face-recognizer人脸的识别
# Eigen特征,根据特征值相似,认为同一个人
fr = cv2.face.EigenFaceRecognizer_create()
labels_train = labels[::2]
len(labels_train)
#30
faces_train = faces[::2]
len(faces_train)
#30
# faces_train2=[]
# for face in faces_train:
#     gray = cv2.cvtColor(face,cv2.COLOR_BGR2BGRA)
#     faces_train2.append(gray)
# 灰度化处理
faces_train2 = []
for face in faces_train:gray = cv2.cvtColor(face,cv2.COLOR_BGR2GRAY)faces_train2.append(gray)
faces_train2 = np.asarray(faces_train2)
faces_train2.shape
#(30, 64, 64)
# 训练
fr.train(faces_train2,labels_train)
face_test = faces[1::2]
#叫什么名字的标签
labels_test =labels[1::2]
targets_labels =targets[::10]
for face in face_test:gray = cv2.cvtColor(face,cv2.COLOR_RGB2GRAY)#   1 ~ 20label,confidence = fr.predict(gray)cv2.imshow(targets_labels[label-1],face)print(label,confidence)print('------------------',targets_labels[label-1])cv2.waitKey(1000)cv2.destroyAllWindows()
print(targets_labels)

【机器学习】opencv-人脸识别相关推荐

  1. 机器学习之人脸识别face_recognition使用

    机器学习之人脸识别face_recognition使用 简介 一 二 主要方法介绍 1. load_image_file 加载图像 2. face_locations 定位图中所有人脸 3. face ...

  2. openCV人脸识别简单案例

    1 基础 我们使用机器学习的方法完成人脸检测,首先需要大量的正样本图像(面部图像)和负样本图像(不含面部的图像)来训练分类器.我们需要从其中提取特征.下图中的 Haar 特征会被使用,就像我们的卷积核 ...

  3. OpenCV 人脸识别 源代码

    请直接查看原文 OpenCV 人脸识别 源代码 https://hotdog29.com/?p=553 在 2019年7月6日 上张贴 由 hotdog发表回复 opencv 人脸识别 在本教程中,您 ...

  4. 基于python opencv人脸识别的签到系统

    基于python opencv人脸识别的签到系统 前言 先看下效果 实现的功能 开始准备 页面的构建 功能实现 代码部分 总结 前言 一个基于opencv人脸识别和TensorFlow进行模型训练的人 ...

  5. OpenCV人脸识别(1)原理介绍

    前言 本系列博客学习如何使用OpenCV来执行面部识别. 为了构建人脸识别系统,我们首先进行人脸检测,使用深度学习从每个人脸提取人脸特征,在提取到特征上训练人脸识别模型,然后用OpenCV识别图像和视 ...

  6. 【转】OpenCV人脸识别

    转自:https://blog.csdn.net/learning_tortosie/article/details/85121576 写在前面 这是Adrian Rosebrock博客的第二篇翻译, ...

  7. opencv 全志_移植opencv人脸识别到全志A10开发板上 +linux3.0内核

    移植opencv人脸识别 libz:    zlib-1.2.3 libjpeg:   jpegsrc.v6b libpng:   libpng-1.2.18 libyasm:   yasm-0.7. ...

  8. python人脸照片分类_Python OpenCV 人脸识别(一)

    前面介绍了Numpy模块,下面再介绍一个OpenCV模块,就基于这两个库看一下当下很火的人工智能是如何实现的,我们介绍几个:人脸识别(当下非常火的).音视频操作等等.今天先介绍一下静态图片的人脸识别, ...

  9. 图像识别——(java)opencv(人脸识别简单实现)

    人脸识别 package com.acts.opencv.demo;import javax.servlet.http.HttpServletRequest; import javax.servlet ...

  10. Python+OpenCV人脸识别签到考勤系统(新手入门)

    Python+OpenCV人脸识别签到考勤系统(新手入门) 前言 项目效果图 项目需要的环境 编译器 辅助开发QT-designer 项目配置 代码部分 核心代码 项目目录结构 后记 正式版改进 项目 ...

最新文章

  1. 程序员拯救乐坛?OpenAI用“逆天”GPT2.0搞了个AI音乐生成器
  2. 织梦换了html模板样式没了,织梦(dedecms)如何更换网站模板?
  3. Oracle11g EM界面乱码解决方法
  4. PyQt5 技巧篇-按钮竖排显示方法,Qt Designer设置按钮竖排显示。
  5. Keras之DNN:基于Keras(sigmoid+linear+mse+predict)利用DNN实现回归预测——DIY多分类数据集预测新数据点
  6. php中url编码地址栏,php url地址栏传中文乱码解决方法集合_PHP
  7. Angular自学笔记(?)DI提供者
  8. 判定重大风险有哪几种_安全风险识别和评估的方法有哪些?
  9. Oracle 数据库误truncate table恢复过程
  10. 几时几分几秒怎么写_泼尿 涂油漆 写威胁语 业主莫名被骚扰
  11. c语言程序改错输入5结果为15,《C语言程序设计教学课件》程序改错(自我总结).doc...
  12. 黑苹果macOS Catalina 10.15.4 安装过程详细记录
  13. i310100和i59400f哪个好 i3 10100和i5 9400f差距大吗
  14. word排版案例报告_看完这4个文章排版要点,你就会排版啦!
  15. 【黄啊码】fastadmin接入微信支付和支付宝支付
  16. 微信小程序信息授权获取(头像,昵称,等)
  17. 玉龙雪山景区完善视频监控设施打造智慧景区
  18. 常用的Linux快捷键 [译]
  19. XYOJ1257: 捕杀恶龙(break+j=k)
  20. 人性中的最黑暗面——《电锯惊魂》影…

热门文章

  1. 源码阅读 AtomicInteger
  2. springCloud - 第4篇 - 消费者调用服务 ( Feign )
  3. 解决:Caused by: java.lang.UnsupportedOperationException: null
  4. Spring Boot 是什么,有什么用。
  5. face++算法工程实习生面试
  6. CF #366(div.2) C 模拟,思维
  7. 3ds max删除了对象后,还是将原来所有对象输出的原因
  8. JQUERY插件JqueryAjaxFileUplaoder----更简单的异步文件上传
  9. springboot 整合 mongodb实现 批量更新数据
  10. 数据库常见面试题总结