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

源地址:源地址

輔助:輔助

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章