当前位置: 首页 > news >正文

夜场酒吧娱乐ktv类企业网站源码郑州信盈达嵌入式培训

夜场酒吧娱乐ktv类企业网站源码,郑州信盈达嵌入式培训,网站建设思维导图模版,奇迹建站模板今日继续学习树莓派4B 4G:(Raspberry Pi,简称RPi或RasPi) 本人所用树莓派4B 装载的系统与版本如下: 版本可用命令 (lsb_release -a) 查询: Opencv 版本是4.5.1: 今日学习 OpenCv定位物体实时位置,代码来源是…

今日继续学习树莓派4B 4G:(Raspberry Pi,简称RPi或RasPi)

 本人所用树莓派4B 装载的系统与版本如下:

 版本可用命令 (lsb_release -a) 查询:

 Opencv 版本是4.5.1:

今日学习 OpenCv定位物体实时位置,代码来源是创乐博,这里作学习解释

文章提供测试代码讲解,整体代码贴出、测试效果图

目录

完整实例代码贴出:

实验过程:

获取小球的准确HSV色域:

将上一步得到的HSV色域替换在程序中:

实验结果截图与视频:

网上查阅资料贴出:


完整实例代码贴出:

这个代码实现了圈出指定HSV色彩范围的圆形物体,并打印出其质心在视频帧上的坐标

并且有LED相关的亮灭操作用于指示是否检测到目标

# -*- coding: utf-8 -*-from __future__ import print_function     # 导入print函数,确保在Python 2和Python 3中都能以兼容的方式使用print。  
from imutils.video import VideoStream # 从imutils库中导入VideoStream,用于从摄像头捕获视频帧。 
import imutils                                             # 导入imutils库,该库提供了图像和视频处理的实用功能。 
import time
import cv2
import os
import RPi.GPIO as GPIO                          # 导入Raspberry Pi的GPIO库,用于控制GPIO引脚。Led = 21                                                      # 定义一个变量Led,表示连LED的GPIO引脚编号。
GPIO.setwarnings(False)                           # 关闭GPIO库的警告信息。
GPIO.setmode(GPIO.BCM)                       # 设置GPIO引脚编号模式为BCM(Broadcom SOC channel mode)。
GPIO.setup(Led, GPIO.OUT)                     # 设置GPIO引脚Led为输出模式。# 定义一个函数,用于打印对象中心的坐标。
def mapObjectPosition (x, y):print ("[INFO] Object Center coordenates at X0 = {0} and Y0 =  {1}".format(x, y))# 打印一条信息,表示正在等待摄像头预热。 
print("[INFO] waiting for camera to warmup...")
vs = VideoStream(0).start()                     # 创建一个VideoStream对象,并启动它。0表示使用默认的摄像头。  
time.sleep(2.0)                                          # 等待2秒,确保摄像头已经预热完成。colorLower = (9,135,231)                         # 定义HSV颜色空间的下限,用于颜色过滤。
colorUpper = (31,255,255)                       # 定义HSV颜色空间的上限,用于颜色过滤。GPIO.output(Led, GPIO.LOW)                # 将Led引脚设置为低电平,关闭LED。 
ledOn = False                                           # 定义一个变量ledOn,表示LED是否已打开。while True:frame = vs.read()                                                        # 从VideoStream中读取一帧图像。  frame = imutils.resize(frame, width=500)               # 调整帧的大小,使其宽度为500像素。frame = imutils.rotate(frame, angle=0)                   # 旋转帧(虽然在这里旋转角度为0,所以实际上没有旋转)。hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)  # 将帧从BGR颜色空间转换为HSV颜色空间。mask = cv2.inRange(hsv, colorLower, colorUpper)# 使用定义的颜色范围创建一个颜色掩码。mask = cv2.erode(mask, None, iterations=2)         # 对掩码进行腐蚀操作,减少噪声。mask = cv2.dilate(mask, None, iterations=2)         # 对掩码进行膨胀操作,确保对象区域被完全覆盖# 在掩码上查找轮廓。 cnts = cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)cnts = cnts[0] if imutils.is_cv2() else cnts[1]            # 根据OpenCV的版本(2或3/4),选择正确的轮廓列表。 center = None                                                            # 初始化一个变量center,用于存储对象的中心坐标。 if len(cnts) > 0:       # 如果找到了轮廓...  c = max(cnts, key=cv2.contourArea)               # 找到面积最大的轮廓。((x, y), radius) = cv2.minEnclosingCircle(c)     # 找到该轮廓的最小外接圆,并获取其圆心和半径。M = cv2.moments(c)                                         # 计算轮廓c的矩,矩是一组值,可以从中推导出对象的形状特征,如面积、质心等。 center = (int(M["m10"] / M["m00"]), int(M["m01"] / M["m00"])) # 使用矩来计算轮廓的质心(或称为中心),并将其存储在变量center中。 if radius > 10:  # 如果找到的最小外接圆的半径大于10(一个阈值,可以根据实际情况调整):cv2.circle(frame, (int(x), int(y)), int(radius),(0, 255, 255), 2)  # 在原帧上绘制找到的最小外接圆,颜色为青色(BGR中的(0, 255, 255)),线宽为2。cv2.circle(frame, center, 5, (0, 0, 255), -1)  # 在原帧上绘制轮廓的质心(或中心),颜色为红色(BGR中的(0, 0, 255)),并填充。mapObjectPosition(int(x), int(y))             # 调用之前定义的函数,打印对象中心的坐标。  if not ledOn:                                              # 如果LED灯之前没打开(ledOn为False),则将其打开,并将ledOn设置为True。GPIO.output(Led, GPIO.HIGH)ledOn = Trueelif ledOn:         # 如果没有找到轮廓,但LED灯是打开的(ledOn为True):关闭LED灯,并将ledOn设置为False。GPIO.output(Led, GPIO.LOW)ledOn = Falsecv2.imshow("Frame", frame) # 使用OpenCV的imshow函数显示处理后的帧。key = cv2.waitKey(1) & 0xFF   # 如果按下的键是Esc键(ASCII码为27),则退出循环。  if key == 27:breakprint("\n [INFO] Exiting Program and cleanup stuff \n")  # 打印一条信息,表示程序正在退出并进行清理。  
GPIO.cleanup()                                                                       # 清理GPIO设置,释放资源。
cv2.destroyAllWindows()                                                      # 关闭所有OpenCV打开的窗口。
vs.stop()                                                                                  # 停止VideoStream的捕获。

实验过程:

代码中所用的大部分函数已经在之前的几篇文章提到过了,就不重复解释了:

文章网址如下:

树莓派4B_OpenCv学习笔记9:图片的腐蚀与膨胀-CSDN博客

树莓派4B_OpenCv学习笔记12:OpenCv颜色追踪_画出轨迹_树莓派opencv颜色识别-CSDN博客树莓派4B_OpenCv学习笔记13:OpenCv颜色追踪_程序手动调试HSV色彩空间_检测圆-CSDN博客

获取小球的准确HSV色域:

因为程序中已经存在了寻找最大轮廓圆的处理,因此即使不使用上一节文章的手动调节HSV的处理也没什么大问题,但我这里为了检测更为准确专用,还是加上了上一节代码的HSV微调操作:

文章网址如下:

树莓派4B_OpenCv学习笔记13:OpenCv颜色追踪_程序手动调试HSV色彩空间_检测圆-CSDN博客

拍摄照片获取BGR颜色空间:160    75    13

转换为大致的HSV色彩空间:

再使用之前的颜色小球追踪程序对HSV进行进一步细节调整:

调整前:

[97,100,100]

[117,255,255]

调整后:

[92,189,130]

[117,244,200]

将上一步得到的HSV色域替换在程序中:

实验结果截图与视频:

树莓派4B_OpenCv学习笔记15:OpenCv定位物体

网上查阅资料贴出:

[树莓派基础]11.树莓派OpenCV定位物体的实时位置_哔哩哔哩_bilibili

http://www.yayakq.cn/news/900328/

相关文章:

  • 什么网站可以直接做word文档c2c交易会被判刑嘛
  • 连云港公司网站优化服务山东城市建设招生网站
  • 旅行网站建设外贸公司有必要建设网站吗
  • 中山网站制作服务公众号推广一个6元
  • 建设网站要多久到账做网站的预算表
  • 响应式网站设计的现状计算机关于网站开发的证书
  • 网站优化的方法与技巧济南三合一网站建设
  • 怎么用ftp修改网站企业推广策略
  • 做外贸网站代理商wordpress不提示系统更新
  • 金融适合什么颜色做网站金融公司网站模版
  • 网站开发+搜索龙华和龙岗哪个繁华
  • 苏州网站建设丨好先生科技360网页怎么制作
  • 服装 公司 网站建设storefront wordpress
  • 淘宝客怎么做网站导购提交网站收录入口
  • 什么博客可以做网站国外搜索引擎入口
  • 郑州网站设计 郑州网站开发建设百度网站
  • 建设网站需要提供什么资料湖北省住房和建设厅网站首页
  • 北京房山网站建设有没有免费制作视频的软件
  • 网站内链优化自己怎么拍做美食视频网站
  • 学校网站建设需要注意什么网站建设需要哪些步骤
  • 做网站绑定域名 解析域名搜索引擎优化方法有哪些
  • 个人做网站设计企业首页模板
  • 怎么做网站公司宣传资料108社区找工作
  • 制作网站需要哪些素材国内免费服务器地址
  • 网站建设活动方案查询公司信息的网站
  • 网站编程培训哪好自建营销型网站模板
  • 昆明网站建设公司哪家好小型网站开发小论文
  • 信誉好的网站建设案例中建豪城建设有限公司网站
  • 互联网网站开发用哪个语言开发wordpress 插件 样式
  • 建站用企业级主机好还是服务器汕头市公司网站建设多少钱