【OpenCV概念】 11— 对象检测

news2024/11/20 2:38:06

一、说明

        这都是关于物体识别的。物体识别是指通过计算机视觉技术,自动识别图像或视频中的物体及其属性和特征,是人工智能领域的一个分支。物体识别可应用于多个领域,包括工业自动化、智能家居、医疗、安防等。请随时阅读这篇文章:类似哈尔的功能(维基百科))

二、项目介绍 

        我们在这里所做的只是检测俄罗斯车牌和图像,然后使用haarcascade方法模糊它们。

2.1 步骤1: 导入库

import cv2
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

2.2 步骤:导入要使用的图像

img = cv2.imread('DATA/car_plate_0.jpg')

2.3 步骤3:显示图像

        接下来,我们希望您创建一个函数,以更大的比例显示图像并进行颜色校正。

def display(img):
  fig = plt.figure(figsize=(10,8))
  ax = fig.add_subplot(111)
  new_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
  ax.imshow(new_img)

        测试一下:

display(img)

2.4 步骤4: 加载级联俄罗斯车牌号 XML 文件。

        对于此步骤,您必须下载并粘贴到/DATA文件夹中的目录haarcascades。地址如下:opencv/data/haarcascades at master · opencv/opencv · GitHub

plate_cascade = cv2.CascadeClassifier('DATA/haarcascades/haarcascade_russian_plate_number.xml')

2.5 步骤5: 检测板的功能

        接下来,我们要创建一个函数来接收图像并围绕它所获取的内容绘制一个矩形。

def detect_plate(img):
  plate_img = img.copy()
  plate_rects = plate_cascade.detectMultiScale(plate_img,  
    scaleFactor=1.3, minNeighbors=3)
  
  for(x,y,w,h) in plate_rects:
    cv2.rectangle(plate_img, (x,y), (x+w, y+h), (0,0,255),3)
  return plate_img

        测试一下:

result = detect_plate(img)

        显示它:

display(result)

        04步骤 # 检测板的功能

        所以现在我知道车牌在哪里,我可以把它模糊出来。

        所以我要做的方法是,我实际上要删除这个区域并将其设置为感兴趣的区域(RoI)。

        然后我将模糊该区域,然后将其粘贴回原始图像中。

def detect_n_blur_plate(img):
  plate_img = img.copy()
  roi = img.copy()
  plate_rects = plate_cascade.detectMultiScale(plate_img,      
    scaleFactor=1.3, minNeighbors=3)
  for(x,y,w,h) in plate_rects:
    roi = roi[y:y+h, x:x+w]
    blured_roi = cv2.medianBlur(roi, 7)
    plate_img[y:y+h, x:x+w] = blured_roi
  return plate_img

        测试一下:

result = detect_n_blur_plate(img)

        显示它:

display(result)

这些是该项目的文件,在每个图像上运行该方法,请查看这篇有关如何操作文件的文章。 :)

from pathlib import Path
path = Path('DATA/')
files = path.iterdir()
for file in files:
  file_name = file.name
  if file_name[:9]=='car_plate' and file_name[-3:] == 'jpg':
    print(file_name)
    car_plate_0.jpg
    car_plate_1.jpg
    car_plate_2.jpg
    car_plate_3.jpg
    car_plate_4.jpg
    car_plate_5.jpg
    car_plate_6.jpg

这就是大家!

print("That's it! Thank you once again!\nI hope will be helpful.")
That's it! Thank you once again!
I hope will be helpful.

以下是我们测试的图像:

Note: 
The last image the algorithm was not able to detect.
The reasons may be several: The image may be at an angle difficult to detect, the numbering may not be Russian, the taillights do not give adequate space, who knows...
Try it yourself by manipulating the function parameters.
That is all!
Goodbye

Jose Portilla — Python for Computer Vision with OpenCV and Deep Learning — Learn the latest techniques in computer vision with Python, OpenCV, and Deep Learning!

Haar-like feature - Wikipedia

Haar-like features are digital image features used in object recognition. They owe their name to their intuitive…

相关资料:

00 集# 嗨,Python 计算机视觉 — PIL! — Python Imaging Library 简介 #PyVisionSeries

01 Episode# Jupyter-lab — Python — OpenCV — 图像处理练习 #PyVisionSeries

02 集# OpenCV — 图像基础知识 — 从头开始创建图像 #PyVisionSeries

03 集# OpenCV — 形态学操作 — 如何使用梯度 #PyVisionSeries 进行侵蚀、扩张、边缘检测

04 集# OpenCV — 直方图均衡 — 如何均衡图像直方图 — #PyVisionSeries

05 集# OpenCV — 调整图像大小 — 如何在不失真的情况下调整大小 — #PyVisionSeries

07 第 # 集 # YOLO — 对象检测 — 最先进的对象检测框架!

08 集 # OpenCV — HaashCascate — 对象检测 — Viola–Jones 对象检测框架 — #PyVisionSeries

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1112202.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

摩尔信使MThings的实时数据曲线

摩尔信使MThings配备了毫秒级的实时数据录波功能,提供了多种展示模式,包括:固定时间范围、示波器等; 用户可以添加实时数据警戒线,直观呈现异常数据; 用户可以灵活的缩放、拖动曲线数据,可以指…

nodejs+vue衣服穿搭推荐系统-计算机毕业设计

模块包括主界面,系统首页、个人中心、用户管理、风格标签管理、衣服分类管理、衣服穿搭管理、服装信息管理、我的搭配管理、用户反馈、系统管理等进行相应的操作。无论是日常生活,还是特定场景,诸如面试、约会等,人们都有展现自我…

【试题028】C语言关于逻辑与的短路例题

1.题目&#xff1a;设inta1,b;&#xff0c;执行b0&&(a);后&#xff0c;变量a的值是&#xff1f; 2.代码解析&#xff1a; #include <stdio.h> int main() {//设inta1,b;执行b0&&(a);后&#xff0c;变量a的值是?int a 1, b;printf("表达式的值是…

【每日一题】根据规则将箱子分类

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;分类讨论 其他语言cpython3 写在最后 Tag 【分类讨论】【2023-10-20】 题目来源 2525. 根据规则将箱子分类 题目解读 题目意思明确&#xff0c;根据条件判断箱子的类别。 解题思路 方法一&#xff1a;分类讨论 根据…

Pyqt组合控件与QSpacerItem指南

Pyqt组合控件与QSpacerItem指南&#xff09; 组合控件效果如下所示&#xff1a; QSpacerItem详解 组合控件 创建一个组合的控件&#xff0c;比如 QCheckBox 和 QLabel&#xff0c;并为这个组合设置背景颜色&#xff0c;可以将它们放在一个容器小部件中&#xff0c;然后为容器小…

Leetcode——数组的旋转

189. 轮转数组 class Solution { public:void rotate(vector<int>& nums, int k) {int lennums.size();vector<int> num(len);for(int i0;i<len;i){num[(ik)%len]nums[i];}nums.assign(num.begin(),num.end());} };旋转数组 没看出数学公式gg 正确答案 cl…

经典文献阅读之--Calib Anything(使用SAM的无训练标定雷达相机外参)

0. 简介 Camera与LiDAR之间的外部标定研究正朝着更精确、更自动、更通用的方向发展&#xff0c;由于很多方法在标定中采用了深度学习&#xff0c;因此大大减少了对场景的限制。然而&#xff0c;数据驱动方法具有传输能力低的缺点。除非进行额外的训练&#xff0c;否则它无法适…

安卓Ampere Pro(充电评测)v4.09解锁专业版,供大家学习研究参考!

软件功能 支持查看充电的状态&#xff0c;充电速度是否正常&#xff0c;都可以轻松测试。 强大的测试功能&#xff0c;让你全面了解充电的状态。 温度过高提醒&#xff0c;保证手机的温度不过高&#xff0c;及时拔掉电源。 设置通知优先级&#xff0c;最高、较高、默认、较…

Zookeeper集群 + Kafka集群的详细介绍与部署

文章目录 1. Zookeeper 概述1.1 简介1.2 Zookeeper的工作机制1.3 Zookeeper 主要特点1.4 Zookeeper 数据结构1.5 Zookeeper的相关应用场景1.5.1 统一命名服务1.5.2 统一配置管理1.5.3 统一集群管理1.5.4 服务器动态上下线1.5.5 软负载均衡 1.6 Zookeeper 选举机制1.6.1 第一次启…

SI基础知识:说一说玻纤布规格(如1078)的具体含义,以及等效Dk计算

玻纤布的编织包含经向和纬向两个不同的方向&#xff0c;这些玻璃布并没有被紧密放置在一起&#xff0c;在玻纤布上会有开窗&#xff0c;而且经向开窗和纬向开窗大小不同。 IPC定义了每种玻纤布的编织密度以及所用玻璃丝的规格&#xff0c;如下图所示。 看上面的表格&#xff0c…

Fast DDS之Subscriber

目录 SubscriberSubscriberQosSubscriberListener创建Subscriber DataReaderSampleInfo读取数据 Subscriber扮演容器的角色&#xff0c;里面可以有很多DataReaders&#xff0c;它们使用Subscriber的同一份SubscriberQos配置。Subscriber可以承载不同Topic和数据类型的DataReade…

【算法学习】归并算法Merge Sort总结

归并排序思路简单&#xff0c;速度仅次于快速排序&#xff0c;为稳定排序算法&#xff0c;一般用于对总体无序&#xff0c;但是各子项相对有序的数列。 1. 基本思想 归并排序使用分治思想&#xff0c;分治模式下每一层递归有三个步骤&#xff1a; 分解&#xff08;divide)&a…

1813_ChibiOS的RT系统层

全部学习汇总&#xff1a; GreyZhang/g_ChibiOS: I found a new RTOS called ChibiOS and it seems interesting! (github.com) 在ChibiOS中有一个RT系统层的部分&#xff0c;也就是内核的系统层。这个在其他的OS中是没有看到的&#xff0c;这里针对这一部分做一个简单的认识。…

送水订水商城小程序的作用是什么

无论瓶装水还是桶装水在市场中的需求度总是很高&#xff0c;相关送水公司或零售水企业也不少&#xff0c;消费者的购物方式一般是品牌直售或通过经销商&#xff0c;零售水则是超市/商场等场景。随着人们健康品质生活提升&#xff0c;家庭或办公等场所对桶装水或瓶装水的需求日益…

启山智软商城源码新官网震撼上线

欢迎来到我们全新升级的启山智软官网&#xff01; 启山智软一直致力于提供最优质的产品和服务&#xff0c;不断为客户创造更多价值。为了更好地展示我们的品牌形象和产品特色&#xff0c;我们进行了全新的网站升级。新官网拥有更加美观、简洁、直观的界面设计&#xff0c;更加智…

洗地机哪个品牌最好最实用?口碑最好的洗地机

当代人的家庭清洁方式&#xff0c;都悄摸摸的用上了智能扫地机或者洗地机&#xff0c;但是扫地机机器人对于一些顽固污渍的清洁能力略差&#xff0c;人不在家里的时候总担心会碰到啥东西卡机&#xff0c;所以&#xff0c;洗地机更适合对于清洁有高要求的人群&#xff0c;毕竟自…

开发过程中的八种确认方法

确认是确保做了正确的事情&#xff0c;方向不偏。确认可以在项目前期做&#xff0c;也可以在项目后期做&#xff0c;提倡持续确认、质量左移。在前期主要是检测需求的质量&#xff0c;在后期是检测完成的系统是否真的是客户所需。开发过程中常见的八种确认手段有&#xff1a; 1…

【APUE】进程

目录 一、进程标识符 pid 1.1 类型 pid_t 1.2 命令 ps 1.3 getpid && getppid 二、进程的产生 2.1 fork 简介 2.2 fork 实例 1 2.3 fork 实例 2 2.4 vfork 三、进程的消亡及释放资源 3.1 wait 3.2 waitpid 3.3 应用&#xff1a;进程分配初探 四、exec…

基于SSM的疫情期间高校师生外出请假管理系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

十八、字符串(1)

本章概要 字符串的不可变 的重载与 StringBuilder 意外递归字符串操作 字符串操作毫无疑问是计算机程序设计中最常见的行为之一。 在 Java 大展拳脚的 Web 系统中更是如此。在本章中&#xff0c;我们将深入学习在 Java 语言中应用最广泛的 String 类&#xff0c;并研究与之相关…