Ask Your Question

Revision history [back]

Acne Detection OpenCV

I'm working on an acne detection problem. So far I have applied a canny edge detector and want to find the five pimples on the cheek. I've been trying to use a HoughCircle detector but I can't seem to have any luck. Please let me know if y'all have a solution

import sys import cv2 import numpy as np from skimage import io from skimage import feature

def main(argv):

right_cheek_pic =  "right_cheek.jpg"
right_file = argv[0] if len(argv) > 0 else right_cheek_pic
# Loads an image
src1 = cv2.imread(right_file, cv2.IMREAD_COLOR)

gray = cv2.cvtColor(src1, cv2.COLOR_BGR2GRAY)
gray = cv2.medianBlur(gray, 7)

edges = cv2.Canny(gray,40,90)


rows = gray.shape[0]
circles = cv2.HoughCircles(edges, cv2.HOUGH_GRADIENT, 2,rows/16,
                           param1=200, param2=100,
                           minRadius=10, maxRadius=60)

right_cheek_counter = 0
if circles is not None:

    circles = np.uint16(np.around(circles))
    for i in circles[0, :]:
        right_cheek_counter += 1
        center = (i[0], i[1])
        # circle center
        cv2.circle(edges, center, 1, (0, 100, 100), 3)
        # circle outline
        radius = i[2]
        cv2.circle(edges, center, radius, (255, 0, 255), 3)


print (right_cheek_counter, "pimple(s) found on right cheek")

cv2.imshow("right_cheek_pimples.jpg", edges)

#cv2.imshow("left_cheek_pimples.jpg", src3)
cv2.waitKey(0)
return 0

if __name__ == "__main__": main(sys.argv[2:])C:\fakepath\right_cheek.jpg