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()
相关推荐
Elastic 中国社区官方博客8 分钟前
使用 A2A 协议和 MCP 在 Elasticsearch 中创建一个 LLM agent 新闻室:第二部分
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
知识浅谈10 分钟前
我用Gemini3pro 造了个手控全息太阳系
人工智能
孤廖12 分钟前
终极薅羊毛指南:CLI工具免费调用MiniMax-M2/GLM-4.6/Kimi-K2-Thinking全流程
人工智能·经验分享·chatgpt·ai作画·云计算·无人机·文心一言
aneasystone本尊13 分钟前
学习 LiteLLM 的日志系统
人工智能
秋邱17 分钟前
价值升维!公益赋能 + 绿色技术 + 终身学习,构建可持续教育 AI 生态
网络·数据库·人工智能·redis·python·学习·docker
Mintopia20 分钟前
🎭 小众语言 AIGC:当 Web 端的低资源语言遇上“穷得只剩文化”的生成挑战
人工智能·aigc·全栈
安达发公司21 分钟前
安达发|告别手工排产!车间排产软件成为中央厨房的“最强大脑”
大数据·人工智能·aps高级排程·aps排程软件·安达发aps·车间排产软件
公众号-架构师汤师爷22 分钟前
n8n工作流实战:从0到1打造公众号热点选题一键采集智能体(万字图文)
人工智能·agent·智能体·n8n
CoovallyAIHub35 分钟前
抛弃LLM!MIT用纯视觉方法破解ARC难题,性能接近人类水平
深度学习·算法·计算机视觉
Baihai_IDP44 分钟前
剖析大模型产生幻觉的三大根源
人工智能·面试·llm