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
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值