千家信息网

Python OpenCV图像识别的示例分析

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,小编给大家分享一下Python OpenCV图像识别的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、人脸识别主要有以下两种实现方法:1、哈尔(Haar)级联法:专门解决人
千家信息网最后更新 2026年11月02日Python OpenCV图像识别的示例分析

小编给大家分享一下Python OpenCV图像识别的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

一、人脸识别

主要有以下两种实现方法:

1、哈尔(Haar)级联法:专门解决人脸识别而推出的传统算法;

实现步骤:

创建Haar级联器;

导入图片并将其灰度化;

调用函数接口进行人脸识别;

函数原型:

detectMultiScale(img,scaleFactor,minNeighbors)

scaleFactor:缩放尺寸;

minNeighbors:最小像素值;

代码案例:

# 创建Haar级联器facer = cv2.CascadeClassifier('./haarcascades/haarcascade_frontalface_default.xml')# 导入人脸图片并灰度化img = cv2.imread('p3.png')gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 调用接口faces = facer.detectMultiScale(gray, 1.1, 5)for (x,y,w,h) in faces:    cv2.rectangle(img, (x,y), (x+w, y+h), (0,0,255), 2)cv2.imshow('img', img)cv2.waitKey()

结论:Haar级联法对于完整脸部的检测效果还是不错的,但对于不完整脸部识别效果差,这可能也是传统算法的一个缺陷所在,泛化能力比较差;

拓展:Haar级联器还可以对脸部中细节特征进行识别

代码如下:

# 创建Haar级联器facer = cv2.CascadeClassifier('./haarcascades/haarcascade_frontalface_default.xml')eyer = cv2.CascadeClassifier('./haarcascades/haarcascade_eye.xml')# 导入人脸图片并灰度化img = cv2.imread('p3.png')gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 调用接口faces = facer.detectMultiScale(gray, 1.1, 5)i = 0for (x,y,w,h) in faces:    cv2.rectangle(img, (x,y), (x+w, y+h), (0,0,255), 2)    ROI_img = img[y:y+h, x:x+w]    eyes = eyer.detectMultiScale(ROI_img, 1.1, 5)    for (x,y,w,h) in eyes:        cv2.rectangle(ROI_img, (x,y), (x+w, y+h), (0,255,0), 2)    i += 1    name = 'img'+str(i)    cv2.imshow(name, ROI_img)cv2.waitKey()

总结:Haar级联器提供了多种脸部属性的识别,眼睛鼻子嘴巴都可以,但效果不一定那么准确;

二、车牌识别

结构:Haar+Tesseract车牌识别;

说明:Haar级联器仅用于定位车牌的位置,Tesseract用于提取其中的内容;

实现步骤:

1、Haar级联器定位车牌位置;

2、车牌预处理操作(二值化、形态学、滤波去噪、缩放);

3、调用Tesseract进行文字识别;

注意:这里需要预先安装Tesseract;

代码案例:

import pytesseract# 创建Haar级联器carer = cv2.CascadeClassifier('./haarcascades/haarcascade_russian_plate_number.xml')# 导入人脸图片并灰度化img = cv2.imread('chinacar.jpeg')gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 调用接口 cars = carer.detectMultiScale(gray, 1.1, 3)for (x,y,w,h) in cars:    cv2.rectangle(img, (x,y), (x+w, y+h), (0,0,255), 2)# 提取ROIroi = gray[y:y+h, x:x+w]# 二值化ret, roi_bin = cv2.threshold(roi, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)# 文字识别pytesseract.pytesseract.tesseract_cmd = r"D:\Tesseract_OCR\tesseract.exe"text = pytesseract.image_to_string(roi, lang='chi_sim+eng',config='--psm 8 --oem 3')print(text)cv2.putText(img, text, (20,100), cv2.FONT_HERSHEY_SIMPLEX, 2, (0,0,255), 3)cv2.imshow('img', img)cv2.waitKey()

结论:车牌的位置检测比较准确,但Tesseract的识别并不那么准确,可能用ORC识别会准确一些;当然识别的准确率也和图像处理后比较模糊有关,做一些处理能够提升文字的识别率;

三、DNN图像分类

DNN为深度神经网络,并且是全连接的形式;

注意:OpenCV能够使用DNN模型,但并不能训练;

DNN使用步骤:

读取模型,得到网络结构;

读取数据(图片或视频)

将图片转成张量,送入网络;

模型输出结果;

函数原型:

导入模型:readNet(model,[config])

图像转张量:blobFromImage(image,scalefactor,size,mean,swapRB,crop)

送入网络:net.setInput(blob)

模型推理:net.forward()

代码案例:

# 导入模型config = "./model/bvlc_googlenet.prototxt"model = "./model/bvlc_googlenet.caffemodel"net = dnn.readNetFromCaffe(config, model)# 加载图片,转成张量img = cv2.imread('./smallcat.jpeg')blob = dnn.blobFromImage(img, 1.0, (224,224), (104,117,123))# 模型推理net.setInput(blob)r = net.forward()idxs = np.argsort(r[0])[::-1][:5]# 分类结果展示path = './model/synset_words.txt'with open(path, 'rt') as f:    classes = [x[x.find(" ")+1:]for x in f]for (i, idx) in enumerate(idxs):# 将结果展示在图像上    if i == 0:        text = "Label: {}, {:.2f}%".format(classes[idx],            r[0][idx] * 100)        cv2.putText(img, text, (5, 25),  cv2.FONT_HERSHEY_SIMPLEX,            0.7, (0, 0, 255), 2)# 显示图像cv2.imshow("Image", img)cv2.waitKey(0)

看完了这篇文章,相信你对"Python OpenCV图像识别的示例分析"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

图像 图片 模型 人脸 车牌 代码 接口 灰度 网络 脸部 位置 函数 张量 效果 文字 案例 步骤 结果 示例 分析 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州为想互联网科技有限公司 中关村互联网科技集团 互联网科技巨头监管 互联网与科技发展 有马互联网科技 西安互联网科技公司 米客互联网科技 互联网科技大会案例 甘肃拓世互联网科技有限公司 科技赋能互联网健康 创业天下互联网科技有限公司 随着互联网科技发展 成都互联网科技公司100强 宜昌元轩互联网科技有限公司 山东有哪些互联网科技公司 高科技互联网套路 杭州披云加互联网科技有限公司 中国新注册互联网科技 中国互联网公司的科技投入 六子台科技互联网展会 南京欣网互联网络科技 亿账通互联网科技 湖南洣水互联网科技有限公司扣款 伊宁互联网科技做什么的 山东星卡互联网科技有限公司官网 东营紫格互联网科技 珠海东科互联网科技有限公司 云南互联网科技学费 数字科技和互联网金融哪个好 北京瑞云互联网科技有限公司
0