iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >利用python进行识别相似图片(二)
  • 355
分享到

利用python进行识别相似图片(二)

图片python 2023-01-31 08:01:11 355人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

前言 和网上各种首先你要有一个女朋友的系列一样,想进行人脸判断,首先要有脸,只要能靠确定人脸的位置,那么进行两张人脸是否相似的操作便迎刃而解了。 所以本篇文章着重讲述如何利用OpenCV定位人脸。 上一篇文章的地址: 利用python进行

前言

和网上各种首先你要有一个女朋友的系列一样,想进行人脸判断,首先要有脸
只要能靠确定人脸的位置,那么进行两张人脸是否相似的操作便迎刃而解了。

所以本篇文章着重讲述如何利用OpenCV定位人脸。

上一篇文章的地址:

利用python进行识别相似图片(一)

安装openCV

opencv官网

在进行下一步操作时,我们需要安装openCV,本来安装openCV的步骤跟平常安装其他模块一样,而然
由于Python的历史原因(用过都懂……),弄得一点都不友好。

先说一下,python2.7的用户,可以直接在openCV的官网上直接下载,然后在openCV的build\python
的目录下,根据自己的情况,选择x86,x64下的cv2.pyd放到你python的安装目录的
\Lib\site-packages\下。

至于python3.4的用户,即有点特别。你可以在StackOverFlow找到这样
和这样的答案,但我们不要这么麻烦。

进入这个网站,下载openCV相关whl文件,例如
opencv_python-3.1.0-cp35-none-win_amd64.whl

然后再对应目录下使用pip install opencv_python-3.1.0-cp35-none-win_amd64.whl命令即可

安装完成后,可以在python的命令行下测试

import cv2

如果没有报错的话,恭喜你安装成功。

不过无论是哪个版本的用户,在python上使用openCV都需要先安装numpy这个模块。

numpy

人脸识别的原理

opencv的人脸识别是基于了haar特征,关于什么叫haar特征,足以开另外一篇文章说明了,碍于篇幅,这里不做介绍。
opencv提供已经训练好的数据写成了xml文件,放在了opencv\sources\data\haarcascades的目录下。

如果只是安装了opencv_python-3.1.0-cp35-none-win_amd64.whl的,可以在我的GitHub上,下载cvdata里面的内容
,地址会在文章底部给出。

除了人脸识别的数据外,还有人眼,上半身,下半身……等人体特征的数据,观察xml文件的命名,不难见名知义。

接下来会介绍如何利用这个已经训练好的数据,如果仍对haar模型感兴趣,可以参考以下地址。

zouxy09的专栏

如何使用训练好的数据

先讲关于openCV基本的一些操作。全部具体代码,请查看我的github。

读入一张图片

cv2.imread(path)

如果你用type()把其返回值的类型是numpy.ndarray

而同样,numpy.asarray(Image)返回的亦是numpy.ndarray对象,为什么强调这两点?

  1. cv2.imread(path)不能读取中文路径,若路径中含有中文字符,其会返回None

  2. 在后面的操作中,包括是切割图片(人脸部分),再进行局部哈希,比较相似度,
    等等都是用Image对象进行操作,如果再用Image.open()读入图片未免显得麻烦。

所以干脆统一用Image.open()打开图片,再用numpy.asarray(Image)转化即可。

需要注意有一个不同的地方是虽然其返回的也是三维数组,但在第三维,即某个坐标下的RGB值,两个矩阵的顺序是反的,但只要另外编写一个小函数将其反转即可。

载入xml数据

face_cascade = cv2.CascadeClassifier(xml_path)

将图片灰度化

 if img.ndim == 3:
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
 else:
    gray = img 

# 如果img维度为3,说明不是灰度图,先转化为灰度图gray,如果不为3,也就是2,原图就是灰度图

img是之前读入的三维数组,虽然灰度图可以用Image对象的convert('L')完成,但由于不确定
opencv的处理方法是否和该方法一样,所以还是用opencv自己的方法进行处理比较好。

获取人脸坐标


faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=3, 
minSize=(10,10),flags=cv2.CASCADE_SCALE_IMAGE)
  • scale_factor:被检测对象的尺度变化。尺度越大,越容易漏掉检测的对象,但检测速度加快;尺度越小,检测越细致准确,但检测速度变慢。

  • min_neighbors:数值越大,检测到对象的条件越苛刻;反之检测到对象的条件越宽松;

  • minSize:检测对象的大小

该方法返回的是一个列表,每个列表元素是长度为四的元组,分别脸部的左上角的x,y值,脸部区域的宽度和高度。

下一步操作

通过上述的方法,我们就已经获取到人脸的位置,下一步你可以通过ImageDraw`对象进行绘图,框出人脸的位置。

同样,你也可以使用Imagecrop方法把人脸部分提取出来,然后进行局部哈希,
通过上一篇文章提及的算法,比较两者的相似度。

两种操作分别在我的github中实现了,请参考我的github中face1.py,和face2.py两个python文件。

写一只具有识别能力的图片爬虫

在上一篇文章中,我说了会应用这些算法做成以只具有识别能力的图片爬虫,然现在我也确实是在做
但考虑到作为核心的图片识别和人脸识别的部分我已经写成文章分享出来,其余部分就是想写其他爬虫一样而已,所以我决定看看这两篇文章的反响后再决定是否继续该系列,把图片爬虫的制作过程和大家分享一下。

总结

鉴于个人实力有限,本文未能详细说明人脸识别的原理,
但总结了如何利用已经训练好的数据进行人脸识别,希望能帮到有需要的朋友。

如有不足之处,欢迎提出。

本文涉及内容的详细代码在下面的github地址。

我的github仓库

欢迎star,也欢迎给意见

本文参考文章

wphh的博客

--结束END--

本文标题: 利用python进行识别相似图片(二)

本文链接: https://www.lsjlt.com/news/192993.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 利用python进行识别相似图片(二)
    前言 和网上各种首先你要有一个女朋友的系列一样,想进行人脸判断,首先要有脸,只要能靠确定人脸的位置,那么进行两张人脸是否相似的操作便迎刃而解了。 所以本篇文章着重讲述如何利用openCV定位人脸。 上一篇文章的地址: 利用python进行...
    99+
    2023-01-31
    图片 python
  • Python基于Opencv识别两张相似图片
    目录相关背景 直方图计算法 图像指纹与汉明距离 平均哈希法(aHash) 感知哈希算法(pHash) dHash算法 在网上看到python做图像识别的相关文章后,真心感觉pytho...
    99+
    2024-04-02
  • 怎么在Python中使用Opencv识别相似的图片
    这篇文章给大家介绍怎么在Python中使用Opencv识别相似的图片,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。python主要应用领域有哪些1、云计算,典型应用OpenStack。2、WEB前端开发,众多大型网站均...
    99+
    2023-06-14
  • 使用python进行图片的文字识别
    使用python进行图片的文字识别 文章目录 使用python进行图片的文字识别安装 Tesseract OCR安装过程配置系统的环境变量 安装python的第三方库Pytesserac...
    99+
    2023-09-08
    python windows pytesseract Tesseract ORC
  • python利用pytesseract快速识别提取图片中的文字((图片识别)
    目录前言一、配置环境1. 安装python依赖2. 安装识别引擎二、使用步骤1.引入库2.提取图片文字3.运行效果总结 提示:本文多图,请手机端注意流量。 前言 利用python做图...
    99+
    2022-11-13
    python pytesseract识别图片文字 python pytesseract提取图片文字 python pytesseract图片中文字
  • 如何利用Python识别图片中的文字
    这篇文章将为大家详细讲解有关如何利用Python识别图片中的文字,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、Tesseract文字识别是ORC的一部分内容,ORC的意思是光学字符识别,通俗讲就是文字...
    99+
    2023-06-15
  • 如何用 Python 进行 OCR 图像识别
    这篇文章主要介绍“如何用 Python 进行 OCR 图像识别”,在日常操作中,相信很多人在如何用 Python 进行 OCR 图像识别问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何用 Python 进行...
    99+
    2023-06-15
  • java使用tess4j进行图片文字识别功能
    目录java使用tess4j进行图片文字识别一、简介二、使用过程1.maven依赖引入pom.xml2.准备好tessdata目录下的语言库文件3.写测试代码进行测试三、源码下载地址...
    99+
    2023-05-14
    java图片文字识别 java图片文字识别 java tess4j识别图片文字
  • 如何利用Python识别图片中的文字详解
    一、Tesseract 文字识别是ORC的一部分内容,ORC的意思是光学字符识别,通俗讲就是文字识别。Tesseract是一个用于文字识别的工具,我们结合Python使用可以很快的实...
    99+
    2024-04-02
  • 如何利用React实现图片识别App
    先把效果图给大家放上来 个人觉得效果还行。识别不太准确是因为这个 app学习图片的时间太短(电脑太卡)。 (笔者是 window10) 安装运行环境: npm install ...
    99+
    2024-04-02
  • 用Python进行简单的文本相似度分析
    学习目标: 利用gensim包分析文档相似度 使用jieba进行中文分词 了解TF-IDF模型 环境: Python 3.6.0 |Anaconda 4.3.1 (64-bit) 工具: jupyter notebook 注:...
    99+
    2023-01-31
    文本 简单 Python
  • java怎么使用tess4j进行图片文字识别功能
    这篇文章主要介绍“java怎么使用tess4j进行图片文字识别功能”,在日常操作中,相信很多人在java怎么使用tess4j进行图片文字识别功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java怎么使用t...
    99+
    2023-07-05
  • 怎么利用Node进行图片压缩
    怎么利用Node进行图片压缩?下面本篇文章以PNG图片为例给大家介绍一下进行图片压缩的方法,希望对大家有所帮助!最近要搞图像处理服务,其中一个是要实现图片压缩功能。以前前端开发的时候只要利用canvas现成的API处理下就能实现,后端可能也...
    99+
    2023-05-14
    图片压缩 Node.js
  • 如何使用PHP进行图像识别?
    随着人工智能技术的发展,图像识别在各个领域的应用越来越广泛。而PHP作为一种流行的Web编程语言,也可用于图像识别的应用。本文将介绍如何使用PHP进行图像识别。一、什么是图像识别?图像识别,也被称为图像分类或图像识别,是通过计算机程序对数字...
    99+
    2023-05-21
    机器学习 PHP 图像识别
  • 怎么在python中利用opencv对图片进行旋转
    今天就跟大家聊聊有关怎么在python中利用opencv对图片进行旋转,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。python是什么意思Python是一种跨平台的、具有解释性、编译...
    99+
    2023-06-14
  • 怎么利用Tensorflow2进行猫狗分类识别
    这篇文章主要讲解了“怎么利用Tensorflow2进行猫狗分类识别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么利用Tensorflow2进行猫狗分类识别”吧!数据集获取使用tf.ker...
    99+
    2023-07-02
  • 如何利用Tensorflow2进行猫狗分类识别
    目录前言数据集获取文件解压将文件分为训练集与验证集绘图查看模型建立神经网络模型模型编译数据预处理模型训练运行模型可视化中间表示评估模型精度与损失值总结前言 本文参照了大佬Andrew...
    99+
    2024-04-02
  • 利用python怎么对碑帖图片进行横向拼接
    本篇文章给大家分享的是有关利用python怎么对碑帖图片进行横向拼接,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。python可以做什么Python是一种编程语言,内置了许多有...
    99+
    2023-06-07
  • 怎么使用python删除同一文件夹下相似的图片
    小编给大家分享一下怎么使用python删除同一文件夹下相似的图片,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!python有哪些常用库python常用的库:1.r...
    99+
    2023-06-14
  • 如何在Python中进行图像处理和识别
    如何在Python中进行图像处理和识别摘要:现代技术使得图像处理和识别在许多领域中成为了一个重要的工具。Python作为一种易于学习和使用的编程语言,具有丰富的图像处理和识别库。本文将介绍如何使用Python进行图像处理和识别,并提供具体的...
    99+
    2023-10-22
    图像处理 图像识别 Python编程
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作