OpenCV识别电脑摄像头中的圆形物体

思路步骤

  1. 初始化摄像头 :使用cv2.VideoCapture打开电脑摄像头。
  2. 处理每一帧图像:对摄像头捕获的每一帧图像进行处理,包括灰度化、高斯模糊、霍夫圆变换等操作。
  3. 绘制圆形和圆心 :如果检测到圆形,使用cv2.circle函数用黄线绘制圆形边缘,用红线绘制圆心。
  4. 显示结果 :使用cv2.imshow显示处理后的图像,并通过cv2.waitKey等待按键事件。

代码解释

  1. 导入必要的库 :导入cv2numpy库。
  2. 打开摄像头 :使用cv2.VideoCapture(0)打开电脑默认摄像头。
  3. 循环读取图像帧:在循环中不断读取摄像头捕获的图像帧。
  4. 图像预处理:将图像转换为灰度图,并进行高斯模糊以减少噪声。
  5. 霍夫圆变换 :使用cv2.HoughCircles函数检测圆形,该函数需要设置一些参数,如param1param2minRadiusmaxRadius等。
  6. 绘制圆形和圆心 :如果检测到圆形,使用cv2.circle函数绘制圆形边缘和圆心。
  7. 显示结果 :使用cv2.imshow显示处理后的图像,并通过cv2.waitKey等待按键事件。
  8. 释放资源 :按q键退出循环后,释放摄像头并关闭所有窗口。

注意事项

  • 霍夫圆变换的参数(如param1param2minRadiusmaxRadius)可能需要根据实际情况进行调整,以获得更好的检测效果。

  • 确保你的电脑上已经安装了 OpenCV 库,可以使用pip install opencv-python进行安装。

    python 复制代码
    import cv2
    import numpy as np
    
    # 打开摄像头
    cap = cv2.VideoCapture(0)
    
    while True:
        # 读取一帧图像
        ret, frame = cap.read()
        if not ret:
            break
    
        # 将图像转换为灰度图
        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    
        # 高斯模糊以减少噪声
        blurred = cv2.GaussianBlur(gray, (9, 9), 2)
    
        # 使用霍夫圆变换检测圆形
        circles = cv2.HoughCircles(blurred, cv2.HOUGH_GRADIENT, 1, 20,
                                   param1=50, param2=30, minRadius=10, maxRadius=0)
    
        # 如果检测到圆形
        if circles is not None:
            circles = np.round(circles[0, :]).astype("int")
            for (x, y, r) in circles:
                # 用黄线绘制圆形边缘
                cv2.circle(frame, (x, y), r, (0, 255, 255), 2)
                # 用红线绘制圆心
                cv2.circle(frame, (x, y), 2, (0, 0, 255), 3)
    
        # 显示处理后的图像
        cv2.imshow('Circle Detection', frame)
    
        # 按 'q' 键退出循环
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    
    # 释放摄像头并关闭所有窗口
    cap.release()
    cv2.destroyAllWindows()
相关推荐
是店小二呀12 分钟前
CANN 异构计算的极限扩展:从算子融合到多卡通信的统一优化策略
人工智能·深度学习·transformer
冻感糕人~16 分钟前
收藏备用|小白&程序员必看!AI Agent入门详解(附工业落地实操关联)
大数据·人工智能·架构·大模型·agent·ai大模型·大模型学习
予枫的编程笔记19 分钟前
【Linux入门篇】Ubuntu和CentOS包管理不一样?apt与yum对比实操,看完再也不混淆
linux·人工智能·ubuntu·centos·linux包管理·linux新手教程·rpm离线安装
陈西子在网上冲浪19 分钟前
当全国人民用 AI 点奶茶时,你的企业官网还在“人工建站”吗?
人工智能
victory043122 分钟前
hello_agent第九章总结
人工智能·agent
骇城迷影23 分钟前
Makemore 核心面试题大汇总
人工智能·pytorch·python·深度学习·线性回归
Leoobai25 分钟前
当我花30分钟让AI占领了我的树莓派
人工智能
AI资源库28 分钟前
Remotion 一个用 React 程序化制作视频的框架
人工智能·语言模型·音视频
Web3VentureView31 分钟前
SYNBO Protocol AMA回顾:下一个起点——什么将真正推动比特币重返10万美元?
大数据·人工智能·金融·web3·区块链
打破砂锅问到底00731 分钟前
AI 驱动开发实战:10分钟从零构建「微信群相册」小程序
人工智能·微信·小程序·ai编程