Обнаружение круга с помощью преобразования Хафа - PullRequest
2 голосов
/ 16 октября 2019

Я пытался обнаружить монеты на заданном изображении, чтобы нарисовать вертикальную линию или группировать монеты, которые попадают под одну и ту же прямую линию.

import cv2
from PIL import Image
import numpy as np

import matplotlib.pyplot as plt
img = Image.open("coin.jpg")
imgUMat = np.float32(img)
gray = cv2.cvtColor(imgUMat, cv2.COLOR_BGR2GRAY)
#plt.imshow(img)
#gray = (np.float32(imgUMat), cv2.COLOR_RGB2GRAY)
#gray = cv2.cvtColor(cv2.UMat(img), cv2.COLOR_RGB2GRAY)
#gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
#gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
gray = cv2.resize(gray,None,fx=0.25, fy=0.25, interpolation = cv2.INTER_CUBIC)

img = cv2.medianBlur(gray,1)
circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 1, 20,
              param1=30,
              param2=15,
              minRadius=0,
              maxRadius=0)
#circles = cv2.HoughCircles(gray,cv2.HOUGH_GRADIENT,1,100,param1=100,param2=1)
if (circles!=None):
    i = np.uint16(np.around(circles))
    cv2.circle(gray,(i[0,0,0],i[0,0,1]),i[0,0,2],(255,255,255),1)
    cv2.circle(gray,(i[0,0,0],i[0,0,1]),1,(255,255,255),1)
    center_x.append(i[0,0,0])
    center_y.append(i[0,0,1])

Когда я запускал код, Я получил ошибку в переменной кругов, говоря, что

ошибка: OpenCV (4.1.1) C: \ projects \ opencv-python \ opencv \ modules \ imgproc \ src\ hough.cpp: 1728: ошибка: (-215: утверждение не выполнено)! _image.empty () && _image.type () == CV_8UC1 && (_image.isMat () || _image.isUMat ()) в функции 'cv:: HoughCircles '

...