Python-opencv实现目标检测定位:判断固定颜色物体是否在规定区域内

这篇具有很好参考价值的文章主要介绍了Python-opencv实现目标检测定位:判断固定颜色物体是否在规定区域内。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、简介

主要实现实时检测视频或者摄像头中出现的固定颜色(本例中使用绿色)是否在规定的区域范围内,并将结果反馈到原视频上。

二、效果

实现的效果如下图所示:

1、当绿色物体出现在屏幕中的黑框中时,在视频左上角反馈一个“True”的信息。

opencv目标识别与定位,opencv,计算机视觉,python

2、当绿色物体出现在屏幕中但没有完全出现在黑框中时,在视频左上角反馈一个“Flase”的信息。

opencv目标识别与定位,opencv,计算机视觉,python

3、当绿色物体没有出现在屏幕中时,不显示任何信息。

三、代码

运行环境:python 3.8.17      opencv 4.8.0

下面是完整代码:

import numpy as np
import cv2

cap = cv2.VideoCapture("video.mp4")  # 将"video.mp4"换为0,即可调用摄像头
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))  # 获取视频的宽度
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))  # 获取视频的高度
print(width, height)
# 下面是规定区域的位置设置
w1 = 400
h1 = 400
x1 = int(width / 2 - w1 / 2)
y1 = int(height / 2 - h1 / 2 - 100)
# print(x1, y1, x1 + w1, y1 + h1)
font = cv2.FONT_HERSHEY_SIMPLEX  # 设置字体样式
kernel = np.ones((5, 5), np.uint8)  # 卷积核

if cap.isOpened() is True:  # 检查摄像头是否正常启动
    while True:
        ret, frame = cap.read()
        if not ret:
            break
        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)  # 转换为灰色通道
        hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)  # 转换为HSV空间

        lower_green = np.array([35, 50, 100])  # 设定绿色的阈值下限
        upper_green = np.array([77, 255, 255])  # 设定绿色的阈值上限
        # 消除噪声
        mask = cv2.inRange(hsv, lower_green, upper_green)  # 设定掩膜取值范围
        opening = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel)  # 形态学开运算
        bilateral = cv2.bilateralFilter(mask, 10, 200, 200)  # 双边滤波消除噪声
        edges = cv2.Canny(opening, 50, 100)  # 边缘识别

        # 在原视频上跟踪目标绘制绿色矩形框
        contours, _ = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
        for contour in contours:
            x, y, w, h = cv2.boundingRect(contour)  # 获取轮廓的边界框
            # print(x, y, w, h)
            cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)  # 在原视频上绘制矩形框
            # 判断位置关系
            if x >= x1 and y >= y1 and x + w <= x1 + w1 and y + h <= y1 + h1:
                result = "True"
            else:
                result = "Flase"
            cv2.putText(frame, result, (10, 30), font, 1.0, (255, 0, 255), 2)

        # 在原视频上绘制限定区域框
        cv2.rectangle(frame, (x1, y1), (x1 + w1, y1 + h1), (0, 0, 0), 2)  # frame要绘制的帧,四个坐标点,颜色,线宽

        cv2.imshow('edges', edges)
        cv2.imshow('frame', frame)
        k = cv2.waitKey(5) & 0xFF
        # 按Esc键退出
        if k == 27:
            break
    cap.release()
    cv2.destroyAllWindows()
else:
    print('cap is not opened!')

可以将cv2.rectangle(frame, (x1, y1), (x1 + w1, y1 + h1), (0, 0, 0), 2)缩进,把固定区域框的颜色从黑色(0,0,0)换为变量color,与判定结果"True""Flase"关联,设为两种不同的颜色,即可只管看到区域之间的位置关系。

缺点:对噪声处理不完全,在分割边缘的时候会产生噪点。

参考自,侵删:OpenCV-Python——实现圆形检测与追踪_opencv打开摄像头检测圆的中心位置python_YukinoSiro的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-797611.html

到了这里,关于Python-opencv实现目标检测定位:判断固定颜色物体是否在规定区域内的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python-opencv划痕检测-续

    这次划痕检测,是上一次划痕检测的续集。 处理的图像如下: 这次划痕检测,我们经过如下几步: 第一步:读取灰度图像 第二步:进行均值滤波 第三步:进行图像差分 第四步:阈值分割 第五步:轮廓检测 第六步:绘制轮廓,并将过滤面积较小的轮廓,且进行轮廓填充 代码

    2024年01月17日
    浏览(42)
  • python-opencv学习笔记(八):判断是否雾天与图像能见度测算

    本篇是最近碰到的一个关于雾天能见度的问题,然后查阅到很多资料,顺便记录一下思考过程,进行总结归类成笔记。主要参考资料是华为杯2020年E题论文,结合一下自己的实际情况,做出了改进与延伸,文献在最后引出。 1. 大气能见度: 能见度是气象、公路行车、飞机飞行

    2024年02月05日
    浏览(38)
  • Python-OpenCV中的图像处理-边缘检测

    Canny 边缘检测是一种非常流行的边缘检测算法,是 John F.Canny 在 1986 年提出的。它是一个有很多步构成的算法:噪声去除、计算图像梯度、非极大值抑制、滞后阀值等。 Canny(image: Mat, threshold1, threshold2, edges=…, apertureSize=…, L2gradient=…) 在 OpenCV 中只需要一个函数: cv2.Canny(),

    2024年02月13日
    浏览(56)
  • .pth转.weights/openCV-python + YOLO v3实现目标检测

      毕设做的是水面目标的目标检测,因为要用Tkinter制作用户界面,于是采用openCV库来实现图像的处理,恰好openCV支持YOLO v3的部署……   因为对Python比较熟悉,综合考虑后选择用Pytorch框架实现,奈何自己太菜,只能去Github上找现成的YOLO v3代码,这个项目里面有详细的使

    2024年02月02日
    浏览(38)
  • 计算机毕业设计:python无人机目标识别+目标跟踪检测系统(OpenCV+YOLO实现) (包含文档+源码+部署教程)

    [毕业设计]2023-2024年最新最全计算机专业毕设选题推荐汇总 Python项目——毕业设计选题参考 2023年 - 2024年 最新计算机毕业设计 本科 选题大全 汇总 感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人 。 p

    2024年04月28日
    浏览(54)
  • Python-OpenCV实现简单的颜色识别(对红色和蓝色识别并输出)

    摄像头识别红色和蓝色并框选,当该颜色为摄像头屏幕上大多数颜色时打印出该颜色的名称 新手学习笔记,第一次写博客,若有错误还请指出( ~`_` )~ 2.初始设置  3.图像处理,提取颜色 4.轮廓绘制  5.颜色识别  下面是OpenCV中HSV空间颜色对照表 6.程序主体 下面是程序运行

    2024年02月11日
    浏览(58)
  • OpenCV实现目标检测

    目标检测是计算机视觉领域的一大重要分支,在自动驾驶等领域发挥着重大作用。本文将介绍如何通过OpenCV实现简单的目标检测。 创建并进入虚拟环境 conda create -n opencv python=3.9 conda activate opencv 安装依赖 pip install opencv-python 下载其他文件 链接:https://pan.baidu.com/s/1nW_WE6PqIEmY

    2024年02月06日
    浏览(28)
  • python opencv 级联Haar多目标检测

    一、基于OpenCV的haar分类器实现笑脸检测 1、Haar分类器介绍 🚀Haar分类器是一种基于机器学习的目标检测算法,它使用Haar特征描述图像中的目标。Haar特征是基于图像亮度的局部差异计算得出的,可以用来描述目标的边缘、角落和线条等特征。 使用Haar分类器进行目标检测的步

    2024年02月17日
    浏览(48)
  • 【opencv】传统目标检测:Haar检测器实现人脸检测

    传统目标分类器主要包括Viola Jones Detector、HOG Detector、DPM Detector,本文主要介绍VJ检测器,在VJ检测器基础上发展出了Haar检测器,Haar检测器也是更为全面、使用更为广泛的检测器。 Viola Jones Detector是作为人脸检测器被Viola和Jones提出来的,后来Rainer Lienhart和Jochen Maydt将这个检测

    2024年02月12日
    浏览(39)
  • 【opencv】传统目标检测:HOG+SVM实现行人检测

    传统目标分类器主要包括Viola Jones Detector、HOG Detector、DPM Detector,本文主要介绍HOG Detector与SVM分类器的组合实现行人检测。 HOG(Histograms of Oriented Gradients:定向梯度直方图)是一种基于图像梯度的特征提取方法,被广泛应用于计算机视觉和机器学习领域。由Navneet Dalal和Bill T

    2024年02月12日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包