Pracowałem nad projektem dla zwierząt domowych, aby dowiedzieć się, jak znaleźć prostą koszykówkę na obrazie. Próbowałem wielu permutacji używania hough.circles i transform, itp. Przez ostatnie kilka tygodni, ale nie mogę wydawać się zbliżać do izolowania koszykówki z przykładami kodu i własnymi majsterkowaniem.Jak mogę pythonically nas opencv znaleźć koszykówkę w obrazie?
Oto przykład fot A oto wynik po prostej wersji kręgu znalezienie kodu Byłem majstrować przy:
ktoś ma jakiś pomysł, gdzie poszły źle i jak Mogę to naprawić?
Oto kod mam błahy z:
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)
Zamiast ładować plik jako obraz w skali szarości, a może załadować go jako obraz kolorowy i wykonać pewne wstępne przetwarzanie w celu podkreślenia pomarańczowego koloru kuli przed spłaszczeniem obrazu i przekazaniem go do filtra Canny? –