首页 > 解决方案 > 计算圆内的直方图值(houghcircles)

问题描述

我一直在尝试转换此 matlab 代码如何检测泡罩包装中的缺陷/缺失药丸?(Matlab) 进入python,我已经在这个问题上停留了一段时间。我试图在我的图像中检测到的霍夫圆内找到直方图值。我尝试为检测到的每个圆圈应用一个掩码并计算这些掩码内的历史值,但我得到的历史值为零。当我尝试使用

masked_img = cv2.bitwise_and(img, img, mask=mask)
cv2.imshow("Masked", masked_img)

在代码末尾,窗口显示黑屏

我的完整代码如下所示

import cv2
import numpy as np
pills = cv2.imread('pill6.jpg').astype('uint8')
gray_img = cv2.cvtColor(pills, cv2.COLOR_BGR2GRAY)
img = cv2.medianBlur(gray_img,  5)
cimg = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)

#applying the hough circle transform
circles = cv2.HoughCircles(img, cv2.HOUGH_GRADIENT, 1, 70, param1=100, param2=30, minRadius=40, maxRadius=60)
circles = np.uint16(np.around(circles))
for i in circles[0, :]:
#draw the outer circle
    cv2.circle(pills, (i[0], i[1]), i[2], (0, 255, 0), 6)

#applying the mask
    for indexx, ch in enumerate(pills):
     mask = np.zeros(img.shape[:2], dtype="uint8")
     cv2.circle(mask, (i[0], i[1]), i[2], (0, 255, 0), 6)
     hist_item = cv2.calcHist([pills], [0], mask, [255], [0, 255])
     print(max(hist_item))
cv2.imshow("HoughCirlces", pills)
cv2.waitKey()
cv2.destroyAllWindows()

药丸6的图像: 药丸6

标签: pythonhistogrammaskingopencv-pythonhough-transform

解决方案


推荐阅读