pycharm用摄像头识别物体XY坐标

怎么用OpenCV-Python 实现用摄像头识别物体的XY坐标

要使用OpenCV-Python实现用摄像头识别物体的XY坐标,可以按照以下步骤进行:

1.导入必要的库和模块。您需要导入OpenCV、Numpy等库,并创建一个VideoCapture对象来读取视频流或摄像头。

import cv2
import numpy as np

cap = cv2.VideoCapture(0) # 0表示第一个摄像头

2.设置颜色范围。在这个例子中,我们将使用一个蓝色物体作为示例目标。因此,需要设置蓝色的HSV范围,以便从视频帧中提取出该物体。

# 设置蓝色范围
lower_blue = np.array([110,50,50])
upper_blue = np.array([130,255,255])

3.开始读取摄像头帧并对其进行处理。通过不断读取摄像头帧,我们可以最终得到一个包含示例目标的帧。接下来,我们将对该帧进行一系列处理,以求出目标物体的XY坐标。

while True:
    # 读取帧
    ret, frame = cap.read()

    # 转换颜色空间
    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

    # 获取蓝色区域
    mask = cv2.inRange(hsv, lower_blue, upper_blue)

    # 对图像进行形态学操作,去噪点
    kernel = np.ones((5,5),np.uint8)
    mask = cv2.dilate(mask,kernel,iterations=1)
    mask = cv2.erode(mask,kernel,iterations=1)

    # 找到物体的轮廓
    contours, hierarchy = cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)

    # 如果存在轮廓,则画出目标框和中心点
    if len(contours) > 0:
        c = max(contours, key=cv2.contourArea)
        rect = cv2.minAreaRect(c)
        box = cv2.boxPoints(rect)
        box = np.int0(box)
        
        # 画出目标框和中心点
        cv2.drawContours(frame,[box],0,(0,255,255),2)
        M = cv2.moments(c)
        center = (int(M["m10"] / M["m00"]), int(M["m01"] / M["m00"]))
        cv2.circle(frame, center, 5, (0, 0, 255), -1)

        # 输出目标物体的XY坐标
        print("x:",center[0],"y:",center[1])

    # 显示结果
    cv2.imshow('frame',frame)
    if cv2.waitKey(1) == ord('q'):
        break

通过以上步骤,您可以在控制台上看到目标物体的XY坐标,并且在视频流中可以看到框选和圈出目标物体的效果。

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7799149
  • 你也可以参考下这篇文章:pycharm中的 opencv-python 没有函数提示的解决方案
  • 除此之外, 这篇博客: Ubuntu20.04+PyCharm+OpenCV(python)完整安装配置流程中的 新建虚拟机配置 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 打开VMware Workstation Pro(以下简称VM),新建虚拟机
    在这里插入图片描述
    选择 “自定义”
    在这里插入图片描述
    选择 “Workstation 15.x”
    在这里插入图片描述
    选择 "稍后安装操作系统"
    在这里插入图片描述
    选择 “Linux”,“Ubuntu 64位”
    在这里插入图片描述
    自定义虚拟机名称,及安装位置
    建议安装于非C盘位置,且按照 \Virtual Machines\Ubuntu 64位 的方式建立文件目录,便于日后管理
    在这里插入图片描述
    自定义 虚拟CPU
    注:根据自己的电脑性能选择
    在这里插入图片描述
    自定义虚拟内存大小
    注:根据自己的电脑性能选择,切莫超过物理实际内存大小

    注:本人设置6G的内存大小是因为后面编译OpenCV时需要较大内存,亲测4G大小会导致编译失败,6G最为稳妥。
    注:若不需要安装OpenCV,选择4G足够,且编译完成OpenCV后仍可再改回4G大小

    在这里插入图片描述
    选择 “网络地址转换(NAT)”
    在这里插入图片描述
    选择 (推荐)
    在这里插入图片描述
    选择 (推荐)
    在这里插入图片描述
    选择 “创建新虚拟磁盘”
    在这里插入图片描述

    自定义虚拟磁盘大小,建议40GB以上
    选择 “拆分成多个文件”
    注:非必要不选择立即分配磁盘空间
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    完成配置

  • 您还可以看一下 李立宗老师的Python+OpenCV计算机视觉课程中的 像素处理小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    我可以为您提供实现物体识别的代码示例,但需说明的是,物体识别的实现需要经过多个步骤,包括预处理、特征提取、特征匹配等过程,对于复杂的场景可能需要使用深度学习等技术,因此下面的代码示例仅供参考。

    1. 安装OpenCV-Python包

    您可以使用pip命令来安装OpenCV-Python包,如下所示:

    pip install opencv-python
    

    如果您的网络环境较差,可以使用以下两种方式进行安装:

    • 临时指定下载路径

    pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple

    • 下载后离线安装

    您可以前往清华大学开源镜像站下载需要安装的包,并通过以下命令进行本地安装:

    pip install <package_name>.whl

    1. 导入OpenCV-Python包

    在Python代码中,您需要使用import cv2语句来导入OpenCV-Python包,如下所示:

    import cv2
    
    1. 打开摄像头

    要使用摄像头进行物体识别,您需要先打开摄像头并读取图像,可以使用cv2.VideoCapture()函数来实现,如下所示:

    ```python cap = cv2.VideoCapture(0) while True: # 读取摄像头画面 ret, frame = cap.read() # 显示摄像头画面 cv2.imshow('frame', frame) # 等待键盘输入 if cv2.waitKey(1) & 0xFF == ord('q'): break