如何通过 Python 和 OpenCV 实现目标数量监控?真强!

【opencv-ssd-python 快速实时的进行目标检测 附上全部代码】使用opencv-ssd-python进行目标检测,使能够检测特定物体并标注出来 使用opencv-ssd-python进行目标检测,使能够检测特定物体并标注出来,快速实时高效很方便!!! 阅读详情

今天我们将利用python+OpenCV实现对视频中物体数量的监控,达到视频监控的效果,比如洗煤厂的监控水龙头的水柱颜色,当水柱为黑色的超过了一半,那么将说明过滤网发生了故障。当然不仅如此,我们看的是图像视频处理的技巧,你也可以将项目迁移到其他地方等,这仅仅是一个例子而已。我们知道计算机视觉中关于图像识别有四大类任务:

分类-Classification:解决“是什么?”的问题,即给定一张图片或一段视频判断里面包含什么类别的目标。

定位-Location:解决“在哪里?”的问题,即定位出这个目标的的位置。

检测-Detection:解决“是什么?在哪里?”的问题,即定位出这个目标的的位置并且知道目标物是什么。

分割-Segmentation:分为实例的分割(Instance-level)和场景分割(Scene-level),解决“每一个像素属于哪个目标物或场景”的问题。

而定位不仅需要找到物体的位置在哪里,还需要能够统计目标的数目以及物体状态。

除了图像分类以外,目标检验要解决问题的架构难题是:

1.目标有可能经常出现在影像的任何方位;

2.目标有各种有所不同的尺寸;

3.目标有可能有各种有所不同的外形。

如果用矩形框来界定目的,则长方形有有所不同的清晰度。由于目的的清晰度有所不同,因此使用经典之作的转动视窗+影像图形的计划解决问题标准化目的检验难题的生产成本太低。近几年来,目标检测算法取得了很大的突破。比较流行的算法可以分为两类,一类是基于Region Proposal的R-CNN系算法(R-CNN,Fast R-CNN, Faster R-CNN等),它们是two-stage的,需要先算法产生目标候选框,也就是目标位置,然后再对候选框做分类与回归。而另一类是Yolo,SSD这类one-stage算法,其仅仅使用一个卷积神经网络CNN直接预测不同目标的类别与位置。第一类方法是准确度高一些,但是速度慢,但是第二类算法是速度快,但是准确性要低一些。那么今天我们的项目并不会太多的讲解各种算法,而是我们的核心主题,目标数量识别。

那么我们将如何进行实现呢

 

多说无益,下面可以开始实现我们的项目。

首先导入相关的库

import cv2
from PIL import Image
from PIL import ImageDraw,ImageFont
import numpy as np

接着我们需要把水龙头流出水柱的部分提取出来,即需要把图片预先处理成这样,作为背景图来用,名为3ji.jpg如图所示:

然后通过图像作差的方法找到水柱的部分,首先就需要将图像转彩灰度图然后高斯模糊便于计算,当然其实不这样也是可以的。其中2.jpg是测试的图片,

代码如下:

'''3ji是背景图不可换,调试换另一个图片,3ji自己用画图找到水的位置清除掉水柱即可,所以说摄像头不能动'''
firstframe=cv2.imread("3ji.jpg")
firstframe= cv2.cvtColor(firstframe, cv2.COLOR_BGR2GRAY)
firstframe= cv2.GaussianBlur(firstframe, (21, 21), 0)
secondframe0=cv2.imread("2.jpg")
secondframe0= cv2.cvtColor(secondframe0, cv2.COLOR_BGR2GRAY)
secondframe= cv2.GaussianBlur(secondframe0, (21, 21), 0)
frameDelta = cv2.absdiff(firstframe, secondframe)
x,y=frameDelta.shape
print(x,y)

接着通过边缘检测找到水柱边界,方便查看。

#frameDelta和canny一个是区域一个是轮廓
img = cv2.GaussianBlur(frameDelta,(3,3),0)
canny = cv2.Canny(img, 0, 100)

定义水柱总面积变量。清水面积变量,ss数组存储像素值位置

area=0 #6687,总面积
qingarea=0
ss=[]

然后画出轮廓,并记录水柱处像素值得位置

#画轮廓,存储要识别的像素值位置,记录在ss数组中
for i in range(x):
       for j in range(y):
           if any(frameDelta[i,j]!=[0,0,0]):#白色的时候,占位
               ss.append([i,j])

然后以原图加轮廓图显示,图片相加即可:

canny0=cv2.add(secondframe0,canny)

接着根据像素值大小判断颜色,通过调试这个项目的阈值是50

#判断水柱颜色,清水占多少像素
for t in ss:
   k,l=t
   area=area+1
   if canny0[k, l] > 50:
       print(canny0[k,l])
       qingarea+=1
接着统计黑色水柱占比率为多少
deta=(qingarea/area)*100
print(qingarea)
pred="清水占比为"+str(deta)+"%"
print(pred)

最后输出图像结果:

cv2.imwrite("pred.jpg",canny0)
canny0=cv2.imread("pred.jpg")
img_PIL = Image.fromarray(cv2.cvtColor(canny0, cv2.COLOR_BGR2RGB))
myfont = ImageFont.truetype(r'C:/Windows/Fonts/simfang.ttf', 40)
draw = ImageDraw.Draw(img_PIL)
draw.text((200, 10), pred, font=myfont, fill=(255,23,140))
img_OpenCV = cv2.cvtColor(np.asarray(img_PIL), cv2.COLOR_RGB2BGR)
cv2.imshow("frame", img_OpenCV)
key = cv2.waitKey(0)

最终达到的演示效果如图所示:

清水占比96%,还是比较准确的

清水占比38%,黑水占比62%,也基本准确。

当然这仅仅是一个思路的问题,至少目前为止网上还没有对物体数目去监控的项目例子,尽管并不是如此高深,但是却是一个很好的探究方向。不仅仅是智能采矿的需要,也可以是智能农业或者智能畜牧业等方面监控的一个想法。当然大家也是可以再次基础上修改完善代码,完整的代码上面已经给出。伴随着移动互联网、手机及各交友的平台的较慢持续发展,照片的广泛传播幅度大大增强,广泛传播范围内也日益扩展。比起书写、视频、录像等广泛传播方式,照片广泛传播极具“点睛”视觉效果,合乎节奏贫困下人们高效的读者方法。

当照片给人们带给快捷的数据纪录和共享方法的同时,照片普遍地广泛传播在社会大众视线下,适当的难题也接踵而来。书写记述,使用者可以精彩通过关键字搜寻提供意愿数据,而当照片记述,使用者难以必要通过搜寻照片索引到可借助数据。

科技进步的变革常常与解决的表达意见如影随形,在使用者痛点下,亟需高科技的改进创意,此自然环境下涌现的图像识别新技术之后变得尤为重要。由此也可见计算机视觉的日益高涨的地位。

 

OpenCV C++ 图像处理实战 ——《物体数量计数与尺寸测量》 本文使用OpenCV C++ 实现物体数量计数与尺寸测量,关键点如下1、图像成像质量不佳时会影响到后续的二值化分割,故我们需要对图像进行图像增强处理,可以多尝试几种不同的图像增强算法。2、图像二值化与形态学处理,这是物体轮廓提取的关键。这步处理得好,后续就可以简化很多步骤。3、轮廓提取。根据二值化轮廓特征,使用轮廓面积、周长、宽高比、圆形度、多边形近似等特征提取我们想要的轮廓。 阅读详情

相关推荐

Opencv项目实战:23 物体计数和表单信息

基于opencv实现了一个物体计数,指的是对特定物体进行计数(对于比较规整的物体效果很好,例如硬币、钥匙、方块等),表单信息指的是对图片进行计数并写入excel表格当中,而使用opencv的方法有局限性,仍然有改进的空间。

m0_62919535的博客 2363

【计算机视觉】OpenCV Python项目实战(3):物体计数

想了解OpenCV Python基础知识的同学,可以看这个课程 《【计算机视觉】OpenCV Python高级编程与实战》  这是一系列关于OpenCV Python的视频课程,这是本系列课程的第3部分,主要讲解使用OpenCV API统计图像中物体的个数,并进行效果演示。   本系列课程使用Python 3.10和OpenCV4讲解。如果读者的Python环境高于Python3.10没有任何关系。但建议读者的Python环境大于Python 3.8,这样能保证本系列课程的所有案例都能顺利运行。   本系列课程的完整目录如下: 1. 图像的加密和解密2. 数字水印3. 物体计数(本课程)4. 缺陷检测5. 手势识别6. 答题卡识别7. 隐身术8. 以图搜图9. 手写数字识别10. 车牌识别11. 指纹识别 

FPGA上的YOLOv8加速实现:从Verilog到高层综合

YOLOv8 采用了更高效的C2f模块与轻量化Backbone结构,模型特征包括:结构紧凑、检测头融合高低层特征;支持Anchor-free检测机制;支持INT8、FP16低精度推理;计算密度高,适合FPGA并行优化。

2501_93174773的博客 917

如何通过 Python 和 OpenCV 实现目标数量监控?

作者 | 李秋键 责编 | 刘静 出品 | 优快云(ID:优快云news) 今天我们将利用python+OpenCV实现对视频中物体数量的监控,达到视频监控的效果,比如洗煤厂的监控水龙头的水柱颜色,当水柱为黑色的超过了一半,那么将说明过滤网发生了故障。当然不仅如此,我们看的是图像视频处理的技巧,你也可以将项目迁移到其他地方等,这仅仅是一个例子而已。我们知道计算机视觉中...

优快云资讯 2691

解密携程风控:user-dun算法中的自定义base64与多模式加密机制剖析

本文深入剖析了携程旅行APP风控核心组件libduncode.so中的user-dun算法。文章重点解密了其采用的自定义Base64编码机制与多模式加密选择逻辑,并详细阐述了如何通过动态分析与静态还原,理解算法与设备指纹的深度绑定关系,为逆向分析类似混淆加固的风控算法提供了系统的方法论。

weixin_29323049的博客 340

别再手动填数据了!Vivado里用.coe文件给ROM IP核预装数据的保姆级教程

本文详细介绍了在Vivado中使用.coe文件为ROM IP核预装数据的全流程教程,包括文件格式规范、数据转换技巧和Vivado配置指南。通过自动化数据加载,开发者可以显著提升FPGA开发效率,避免手动输入错误,适用于查找表、波形存储等多种应用场景。

weixin_33377602的博客 337

Python 下opencv 应用: 物体数数

物体数数,物体个数计算,就是计算一个图形中有多少物体。 python 下用opencv 打开一个图形文件,图形处理,计算图中物体的个数。 除了opencv 要安装好外,还要装好‘imutils。imutils 的下载和安装在Python 下应用opencv 的简单功能演示一文中有介绍。 这个原始代码来自https://www.pyimagesearch.com/2016/11/21/r...

曾立文的博客 5837

机器学习西瓜书期末复习(2022HENU)

期末复习之机器学习 文章目录期末复习之机器学习第一章 绪论 第一章 绪论 机器学习的定义 机器学习致力于研究如何通过计算的手段,利用经验来改善系统自身的性能。 根据训练数据是否拥有标记信息,将学习任务分为监督学习和无监督学习。 监督学习 :分类和回归 线性回归、对数几率回归、决策树、支持向量机、贝叶斯分类器、神经网络 无监督学习:聚类 聚类算法: 原型聚类:(k均值,学习向量量化,高斯混合聚类);密度聚类(DBSVAN);层次聚类(AGNES)。降维。话题分析。图分

qq_46561559的博客 2万+

用opencv统计运动物体的个数

1.使用vibe算法、高斯算法等等去对视频进行运动物体的提取,继而得到一帧帧的只包含黑色(背景)和白色(前景)的图片。 2.使用cvFindContours函数对步骤1中得到的图片进行处理,比如我是这样用的cvFindContours(src, storage, &seq, sizeof(CvContour), CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMP...

xiaochenchen1的博客 3424

dify工作流的原理

摘要: Dify 工作流是一个基于有向无环图(DAG)的智能任务编排系统,支持多节点(如LLM调用、API工具、条件分支等)的可视化拖拽与流程编排。其核心原理包括执行引擎(解析DAG并管理节点依赖)、上下文变量传递(类Jinja模板的变量引用机制)和状态持久化(存储执行日志与中间结果)。工作流通过事件驱动执行,支持异步任务调度,并与RAG知识库、LLM服务等模块深度集成,最终可发布为API或对话应用。技术栈基于Python(FastAPI+Celery)和PostgreSQL,实现低代码化的AI应用开发。

nbspzs的专栏 2185

Flink 作业报错——TaskManager连接不上

Flink 作业报错——TaskManager连接不上

lm223的博客 1900

基于opencv实现对图片中的物体计数

目录1. 基本思路2.代码3.局限性 1. 基本思路 1. 保证图片背景尽量为纯黑或纯白 为了数量检测的方便,将垃圾的背景设置为纯色,最好是纯黑色或纯白色,一会解释原因。 2. 将RGB图片转为灰度图 3. opencv找到能将灰度值最大程度分开的阈值ret opencv的算法自动找到最合适的阈值ret,ret能将灰度图每个像素的灰度值最大限度的区分开。灰度图每个像素的灰度值为0(纯黑)到255(纯白),上面的灰度图中像素灰度值的分布如下所示。 可以看到opencv自动找到ret=92。 这里来

syh的技术记录 1万+

SAPFiori Elements Analytical List Page 概述

ALP(Analytical List Page)是SAP Fiori提供的一种复合页面类型,结合了分析(图表/KPI)与事务(表格/操作)功能,适用于需要分析后立即执行处理的业务场景(如采购价格监控、销售逾期处理等)。其核心价值在于让用户在同一页面完成从数据洞察到事务处理的闭环,减少应用切换带来的效率损耗。 页面结构包含页头KPI标签、交互式图表和明细表格,通过联动过滤、选择同步等机制实现数据钻取与即时操作。支持标准过滤和可视化过滤,并依赖OData注解(SelectionVariant/Presenta

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 267

基于OpenCV简易检测硬币个数

背景:在我们生活中常常需要我们用肉眼来计算某些物品的数量,如果通过人工操作会产生:①.效率低下;②.长时间的工作会导致眼睛疲劳导致错误的计算;为此,我们可以使用图像处理来检测方便我们. 代码如下: #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace std; Mat srcImage; //源图 Mat dstImage; //目标图 Mat grayIma

weixin_55984718的博客 4445

第三天:Python基础语法详解

Python代码规范与注释最佳实践 摘要: 本文深度解析Python缩进规则与代码结构的技术规范,包括缩进的底层原理、语法规则和错误处理。详细阐述Python注释系统,涵盖行内注释、文档字符串和类型注释等多种形式,并提供工业级代码组织方案。研究显示,良好的缩进可提升40%的代码识别速度,降低50%的认知负荷。文章还对比了Sphinx、pdoc等主流文档生成工具,给出企业级项目中的注释编写原则和模板建议,帮助开发者构建更可维护的Python代码。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1009

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

OpenCV实战(五)——对象简单计数

    现在我们用OpenCV来计数图像当中的目标物体数目,针对各个物体之间没有粘连的情况:#include &lt;opencv2/opencv.hpp&gt; #include &lt;iostream&gt; #include &lt;math.h&gt; using namespace cv; using namespace std; int main( ) { Mat src_i...

行歌 9932

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Python调用摄像头并识别黑色物体数量

from collections import deque import numpy as np import cv2 import time import serial # balckLower = np.array([100,43,46]) # 设定蓝色阈值,HSV空间 # blackUpper = np.array([124, 255, 255]) balckLower = np.array([0,0,0]) blackUpper = np.array([180,255,46])# 黑色.

qq_55250969的博客 961

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

[计算机]利用机器学习算法进行物体数量计算的算法实现

利用机器学习算法进行物体数量计算的实现方法。随着物体计数在各行业中的重要性日益凸显,传统技术已无法满足复杂环境下的应用需求。本项目通过收集和标注多种场景下的图像数据,采用卷积神经网络(CNN)等深度学习算法进行物体检测和计数。系统利用图像预处理、特征提取和计数模型的结合,实现对物体数量的高效计算。实验结果表明,该系统在不同场景和条件下均能保持较高的计数准确率,具有良好的实际应用价值。通过本研究,期望为物体数量计算的算法实现提供有效的解决方案,推动相关技术的进一步发展。

Hai_Lang_IT的博客 1710

openCV 霍夫圆变换-统计圆形物体个数

利用霍夫圆变换HoughCircles()函数进行圆检测,此方法可以统计一些圆形物体的个数,比如硬币、乒乓球等。 #include "stdafx.h" #include <opencv2\opencv.hpp> #include <iostream> #include <opencv2/highgui/highgui.hpp> #include"ope...

qthello 3474

python-opencv检测图片中鸡蛋个数/数量

文章目录python-opencv检测图片中鸡蛋个数/数量 python-opencv检测图片中鸡蛋个数/数量 由于需要写一个检测鸡蛋数量的程序,用了几个opencv中的经典方法,实现了图片中鸡蛋的检测。在一步步实现的同时,同时说明每个方法的用途。希望能给学习opencv的小伙伴一些帮助。下图为原始图和实现后的检测边框。 话不多说,上代码。 import cv2 import numpy as np I=cv2.imread(r"C:\Users\ZFG\PycharmProjects\tensorfl

weixin_50233398的博客 7542

OpenCV C++案例实战九《对象计数》

OpenCV C++案例实战九《对象计数》前言一、图像预处理1.灰度、阈值2.腐蚀3.距离变换4.自适应阈值5.膨胀二、轮廓查找三、效果显示四、源码总结 前言 本文将使用OpenCV C++ 进行对象计算。 一、图像预处理 原图如图所示。本案例想做的是统计图像中有多少个物体。简单来说就是通过统计有效轮廓来计数。本案例其实最重要的是如何进行图像预处理,如何才能够将这些轮廓有效区分开。所以,具体图像要设定一个符合特定需求的算法。接下来,我将一一演示如何一步步进行操作的。 1.灰度、阈值 首先进行图像灰度化,

Zero___Chen的博客 6884

Python调用OpenCV接口实现网络摄像头录像和抓拍图片

上篇文章介绍了用 C++调用OpenCV接口,打开网络摄像头录制视频,并抓拍截图。本篇我们看一下,Python如何调用OpenCV接口,来做同样的事情。

Bruce Che 的专栏 5196

python 基于opencv实现玉米籽粒计数

有效避免籽粒摆放紧密而导致识别不准确的问题 背景采用黑色卡纸(不反光即可) 称重后可以进行百粒重计算 import time import cv2,os import numpy as np def myfunc(img): # img = cv2.imread(t_) font = cv2.FONT_HERSHEY_COMPLEX kernel = np.ones((5,5), np.uint8) h,w,c = img.shape im.

m0_69569041的博客 2826

OpenCv案例(一):OpenCvSharp识别图像中物体个数

需求:识别下图中零件的个数,包括其中有粘连部分;可以识别零件以及其他产线样品数量;(如果不知如何使用OpenCvSharp,参考该文章(OpenCvSharp安装)中第一部分内容)

qq_37835727的博客 1万+

Python 数据科学入门教程:TensorFlow 目标检测

TensorFlow 目标检测 原文:TensorFlow Object Detection 译者:飞龙 协议:CC BY-NC-SA 4.0 一、引言 你好,欢迎阅读 TensorFlow 目标检测 API 迷你系列。 这个 API 可以用于检测图像和/或视频中的对象,带有使用边界框,使用可用的一些预先训练好的模型,或者你自己可以训练的模型(API 也变得更...

龙哥盟 4万+

用【opencv-python&c++】实现目标实时检测。(两种方法)

基于opencv的目标实时检测

qq_61339815的博客 2713
上一篇: 将安卓手机打造成你的python全栈开发利器!
下一篇: 如何使用 Python 和 BeautifulSoup 爬取网站!
PythonJavaPHP
博客等级 码龄7年 116粉丝 76原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值