Я пытался обнаружить монеты на заданном изображении, чтобы нарисовать вертикальную линию или группировать монеты, которые попадают под одну и ту же прямую линию.
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 '