基于OpenCV的实战:轮廓检测(附代码解析)

重磅干货,第一时间送达

利用轮廓检测物体可以看到物体的各种颜色,在这种情况下放置在静态和动态物体上。如果是统计图像,则需要将图像加载到程序中,然后使用OpenCV库,以便跟踪对象。
每当在框架中检测到物体时,都会为该物体绘制轮廓,该轮廓将代表物体的轮廓。下一步是找到对象的质心,标识找到影像矩所需的质心坐标,图像力矩是图像像素强度的加权平均值。
因此,我们考虑考虑轮廓内的区域以找到图像矩,如果轮廓中的图像矩变为M,则可以按以下方式计算质心的坐标:

cx = int(M ['m10'] / M ['m00'])
cy = int(M ['m01'] / M ['m00'])

获得质心点后,此质心点将表示对象这样就可以为与质心相对应的对象放置一个边界框。本次实验我们将使用橙色作为对象,首先我们需要安装打包的OpenCV和numpy软件包。

import cv2import numpy as np

插入图片使用“ cv2.imread()”:

#Read Picturesimg = cv2.imread('jeruk.png')

然后将RGB转换为HSV并创建黄色(橙色为右黄色)颜色分割:

#Convert RGB to HSVhsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)#Range of yellow color segmentation / classificationlower = np.array([20,100,100], dtype=np.uint8)upper = np.array([40,255,255], dtype=np.uint8)mask = cv2.inRange(hsv, lower, upper)kernel = np.ones((25,25),np.uint8)

进行对象像素的增厚,然后减小尺寸,以使对象像素彼此不靠近:

# Thicken object pixelsdilation = cv2.dilate(mask,kernel,iterations = 1)# Minimized the object pixels so they're not stick togethererosion = cv2.erode(img,kernel,iterations = 1)

找到橙色的轮廓和阵列:

#Find Contourscontours, hierarchy = cv2.findContours(dilation,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)#Array Contourscontour = []

然后将原始图像复制到“ resultImg”变量:

#copy the original image to "resultImg"resultImg = (img).copy()

对轮廓进行迭代:

#Iterationfor i in range(len(contours)): #amount contours to cnt variable cnt = contours[i] #Looking for radius to drau circle (x,y),radius = cv2.minEnclosingCircle(cnt) #circle center center = (int(x),int(y)) if(int(radius) > 1): contour.append(cnt) #draw the circle resultImg = cv2.circle(resultImg,center,int(radius,(255,0,0),3)

最后一个阶段,显示检测结果的轮廓:

#displays resultscv2.imshow('image',resultImg)cv2.waitKey(0)cv2.destroyAllWindows()

输出结果:

根据前面显示的橙色检测结果,可以通过轮廓检测橙色,该轮廓由橙色对象上存在蓝色圆圈标记。

— — 完 — —

下载1:OpenCV-Contrib扩展模块中文版教程
(0)

相关推荐

  • 树莓派python OpenCV捕获颜色块并通过串口返回坐标信息

    树莓派python OpenCV捕获颜色块并通过串口返回坐标信息 树莓派python OpenCV捕获颜色块并通过串口返回坐标信息 介绍 开发环境 思路 代码 串口部分 图像处理部分 后续处理 树莓派 ...

  • python 图像处理:一福变五福

    快过年了,各种互联网产品都出来撒红包.某宝一年一度的集五福(shua hou)活动更是成为每年的必备活动.虽然到最后每人大概也就分个两块钱,但作为一个全民话题,大多数人还是愿意凑凑热闹.毕竟对于如今生 ...

  • 【OpenCV读取标记点坐标】管道测速

    文章目录 一.项目简介 二.思考步骤 1. 图像二值化 2. 滤波去噪 3. Canny算法检测边缘 4. 查找轮廓并计算 5. 绘制轮廓并表示质心 三.测试结果 四.工程代码 一.项目简介 昨天一个 ...

  • 基于OpenCV的面部关键点检测实战

    重磅干货,第一时间送达 这篇文章概述了用于构建面部关键点检测模型的技术,这些技术是Udacity的AI Nanodegree程序的一部分. 概述 在Udacity的AIND的最终项目中,目标是创建一个 ...

  • 基于OpenCV Haar实战级联分类器的使用

    重磅干货,第一时间送达 近年来,对象检测引起了广泛的关注.从智能手机到交通监控,目标检测已遍及每个领域.时间和准确性是对象检测中的关键约束.目标检测算法的成功取决于其特征表示技术和学习算法,后者仅关注 ...

  • 基于FPGA的扩频通信系统设计(附代码)

    导读 在无线通信系统中,普遍使用扩频通信技术,因此扩频技术对通信系统具有重要的现实意义.直接序列扩频技术是应用最广的一种扩频技术,FPGA具备高速度的并行性特点在无线通信系统中的优势日益增强,利用FP ...

  • 基于OpenCV的路面质量检测

    重磅干货,第一时间送达 路面分类 01.RTK数据集 02.路面类型分类 训练数据文件夹结构 classes = os.listdir('training_data')num_classes = le ...

  • 基于OpenCV的实时睡意检测系统

    重磅干货,第一时间送达 该系统可以检测一个人在开车时是否困倦,如果有的话,可以通过使用语音消息实时提醒他.该系统使用网络摄像头和电话摄像头进行实时数据传输. 01.研究目的 根据国家公路交通安全管理局 ...

  • MaskRCNN 基于OpenCV DNN的目标检测与实例分割

    原文:MaskRCNN 基于OpenCV DNN的目标检测与实例分割 - AIUAI 这里主要记录基于 OpenCV 4.x DNN 模块和 TensorFlow MaskRCNN 开源模型的目标检测 ...

  • 基于OpenCV实战:绘制图像轮廓(附代码)

    重磅干货,第一时间送达 山区和地形图中海拔高的区域划出的线称为地形轮廓,它们提供了地形的高程图.这些线条可以手动绘制,也可以由计算机生成.在本文中,我们将看到如何使用OpenCV在简单图像上绘制轮廓线 ...

  • 实战:使用 OpenCV 的自动驾驶汽车车道检测(附代码)

    重磅干货,第一时间送达 一.边缘检测 我们将使用 Canny 进行边缘检测.如果你不确定这是什么,请查阅相关资料,对于后文的阅读会有帮助. def canyEdgeDetector(image): e ...

  • 基于OpenCV实战:车牌检测

    重磅干货,第一时间送达 拥有思维导图或流程将引导我们朝着探索和寻找实现目标的正确道路的方向发展.如果要给我一张图片,我们如何找到车牌并提取文字? 一般思维步骤: 识别输入数据是图像. 扫描图像以查看由 ...