我一直在做一個關於如何在圖像中找到一個簡單籃球的寵物項目。在過去的幾周裏,我嘗試了一系列使用hough.circles和transform等的組合,但我似乎無法接近使用代碼示例和我自己的修補程序隔離籃球的任何地方。我如何pythonically我們opencv在圖像中找到一個籃球?
下面是一個例子照片: 這裏是圓的簡單版本發現代碼我一直襬弄之後的結果:
任何人有任何想法,我出了問題,以及如何我可以正確嗎?
這裏是我亂搞代碼:
import cv2
import cv2.cv as cv # here
import numpy as np
def draw_circles(storage, output):
circles = np.asarray(storage)
for circle in circles:
Radius, x, y = int(circle[0][3]), int(circle[0][0]), int(circle[0][4])
cv.Circle(output, (x, y), 1, cv.CV_RGB(0, 255, 0), -1, 8, 0)
cv.Circle(output, (x, y), Radius, cv.CV_RGB(255, 0, 0), 3, 8, 0)
orig = cv.LoadImage('basket.jpg')
processed = cv.LoadImage('basket.jpg',cv.CV_LOAD_IMAGE_GRAYSCALE)
storage = cv.CreateMat(orig.width, 1, cv.CV_32FC3)
#use canny, as HoughCircles seems to prefer ring like circles to filled ones.
cv.Canny(processed, processed, 5, 70, 3)
#smooth to reduce noise a bit more
cv.Smooth(processed, processed, cv.CV_GAUSSIAN, 7, 7)
cv.HoughCircles(processed, storage, cv.CV_HOUGH_GRADIENT, 2, 32.0, 30, 550)
draw_circles(storage, orig)
cv.imwrite('found_basketball.jpg',orig)
而不是加載文件作爲灰度圖像,如何加載它作爲彩色圖像,並進行一些預處理,以強調橙色的球之前扁平化的圖像和傳遞給Canny濾波器? –