import numpy as npimport cv2import matplotlib.pyplot as plt
# 导入图像并将其转换为浮点数
original_image = cv2.imread("C:/Users/Ankit Kumar/Desktop/Project.png")img=cv2.cvtColor(original_image,cv2.COLOR_BGR2RGB)vectorized = img.reshape((-1,3))vectorized = np.float32(vectorized)criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 10, 1.0)K = 3attempts=10ret,label,center=cv2.kmeans(vectorized,K,None,criteria,attempts,cv2.KMEANS_PP_CENTERS)center = np.uint8(center)res = center[label.flatten()]result_image = res.reshape((img.shape))figure_size = 15plt.figure(figsize=(figure_size,figure_size))plt.subplot(1,2,1),plt.imshow(img)plt.title('原始图像'), plt.xticks([]), plt.yticks([])plt.subplot(1,2,2),plt.imshow(res)plt.title('当K=%i时的分割图像' % K), plt.xticks([]), plt.yticks([])plt.show()
# 开始对图像进行边缘检测
edges = cv2.Canny(img,150,200)plt.figure(figsize=(figure_size,figure_size))plt.subplot(1,2,1),plt.imshow(img)plt.title('原始图像'), plt.xticks([]), plt.yticks([])plt.subplot(1,2,2),plt.imshow(edges,cmap = 'gray')plt.title('边缘图像'), plt.xticks([]), plt.yticks([])plt.show()
# 我希望在此之后添加一些代码,以便检测图像中的圆并根据图表显示其位置
回答:
查看Hough圆变换,请访问 https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_houghcircles/py_houghcircles.html。
img = cv2.medianBlur(img, 5)cimg = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)circles = cv2.HoughCircles(img, cv2.HOUGH_GRADIENT, param1=50, param2=30, minRadius=0, maxRadius=0)circles = np.uint16(np.around(circles))for i in circles[0, :]: # 绘制外部圆 cv2.circle(cimg,(i[0],i[1]),i[2],(0,255,0),2) # 绘制圆心 cv2.circle(cimg,(i[0],i[1]),2,(0,0,255),3)