Python-基于OpenCV的摄像头圆心计算

我的电脑是windows,在这里记录是自己从安装Python包到代码成功运行的过程。

程序代码使用到了numpy和opencv库。
所以windows下要安装这两个库,通过pip安装。

numpy:一个用python实现的科学计算包。包括:1、一个强大的N维数组对象Array;2、比较成熟的(广播)函数库;3、用于整合C/C++和Fortran代码的工具包;4、实用的线性代数、傅里叶变换和随机数生成函数。numpy和稀疏矩阵运算包scipy配合使用更加方便。

OpenCV:一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。

安装pip过程:
1.将ez_setup.py下载下来,安装setuptools:
ez_setup.py地址:https://bootstrap.pypa.io/ez_setup.py

python ez_setup.py   #安装setuptools

安装成功后会在你的python安装目录下有一个Scripts文件夹,建议将其弄在环境变量中。后续要用到。
2.安装pip

easy_install.exe pip

这里写图片描述

3.安装numpy

pip install numpy

这里写图片描述

下面开始安装opencv库:下载opencv程序,我下载的是2.4.x的。其实opencv的安装就是解压的过程。

这里写图片描述
将上面的文件移动到Python的安装包下。

程序正文:


#Python 3
#使用python程序获取我们电脑摄像头或者外接的usb免驱摄像头的图像
#若提取的图像是电脑自带的摄像头,括号内的数字为0,外界的USB免驱摄像头为1

import numpy as np
import cv2

cap = cv2.VideoCapture(0)

while(true):
    ret.frame = cap.read()
    gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)

    cv2.imshow("frame",gray)  #显示图像
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break;

cap = release()
cv2.destroyAllWindows()


#这里实现的是图像的圆的识别,描边与圆心的计算。
import numpy as np
import cv2

cap = cv2.VideoCapture(0)

while(1):
    #获取每一帧
    ret.frame = cap.read()
    #转到HSV
    hsv = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
    #设定蓝色的阀值
    lower_blue = np.array([110,50,50])
    upper_blue = np.array([130,255,255])

    #根据阀值构建
    mask = cv2.inRange(hsv,lower_blue,upper_blue)

    #对图像和..进行位运算
    res = cv2.bitwise_and(frame,frame,mask=mask)
    gray_img = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
    img = cv2.medianBlur(gray_img,5)
    cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)
    try:
        circles = cv2.HoughCircles(img,cv2.HOUGH_GRADIENT,1,120,param1=100,param2=30,minRadius=0,maxRadius=0)
        circles = np.unint16(np.around(circles))

        for i in circles[0, :]:
             # draw the outer circle
            cv2.circle(cimg,(i[0],i[1]),i[2],(0,255,0),2)
             # draw the center of the circle
            cv2.circle(cimg,(i[0],i[1]),2,(0,0,255),3)

    except Exception as e:
        raise
    else:
        pass
    finally:
        pass

效果图:
这里写图片描述

有什么问题联系我:839505138

源地址:源地址

辅助:辅助

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您好,非常感谢您的提问。针对您的问题,我可以给出以下实现方案: 首先需要安装 OpenCV 库,可以使用 pip install opencv-python 命令进行安装。接下来,您可以使用以下 Python 代码实现蓝色物体检测并打印中心坐标: ```python import cv2 cap = cv2.VideoCapture(0) # 打开摄像头 while True: ret, frame = cap.read() # 读取摄像头数据 if not ret: # 如果读取失败,则结束循环 break # 将图像转换为 HSV 颜色空间 hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) # 定义蓝色范围 lower_blue = np.array([110, 50, 50]) upper_blue = np.array([130, 255, 255]) # 实施掩膜 mask = cv2.inRange(hsv, lower_blue, upper_blue) # 寻找轮廓 contours, hierarchy = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) if contours: # 如果找到轮廓 # 获取最大轮廓 max_contour = max(contours, key=cv2.contourArea) # 获取最小外接圆 (x, y), radius = cv2.minEnclosingCircle(max_contour) center = (int(x), int(y)) radius = int(radius) # 将圆心用红色点标出来 cv2.circle(frame, center, 5, (0, 0, 255), -1) # 打印圆心坐标 print(f"The center of the blue object is: ({x:.2f}, {y:.2f})") # 显示图像 cv2.imshow("frame", frame) if cv2.waitKey(1) == 27: # 如果按下 ESC 键,退出循环 break cap.release() # 释放摄像头 cv2.destroyAllWindows() # 关闭窗口 ``` 希望这个代码能够帮到您,需要注意的是,根据摄像头的不同可能需要进行一定的参数调整才能够得到最佳检测效果。如果您有其他关于 AI、机器学习或编程的问题,随时欢迎向我提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值