Hello,
I am applying the cv.HoughCircles method on a tif image. I am trying on larger and larger regions of the images. It works perfectly if the image size is ~ 3100 x 3500 pixels, but if I move to a region ~28000 x 34500 my computer turns off.
Is that related to a memory problem? If yes, how can I solve it?
Below, please find my code.
Thanks in advance for the help.
Barbara
import sys
import cv2 as cv
import numpy as np
import pdb
def main(argv):
default_file = 'smarties.png'
filename = argv[0] if len(argv) > 0 else default_file
# Loads an image:
src = cv.imread(cv.samples.findFile(filename), cv.IMREAD_COLOR)
# Print the dimension of the images:
dimensions = src.shape
print('Image dimensions:', dimensions, 'pixel')
pdb.set_trace()
# Check if image is loaded fine:
if src is None:
print ('Error opening image!')
print ('Usage: hough_circle.py [image_name -- default ' + default_file + '] \n')
return -1
# Convert image to grayscale:
gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)
# Apply a median blur to reduce noise and avoid false circle detection:
gray = cv.medianBlur(gray, 7)
# Display the filtered image:
#cv.imshow("Smoothed image", gray)
#cv.waitKey(0)
# Find the number of rows (pixel):
rows = gray.shape[0]
# Apply the Hough Circle detection method:
#circles = cv.HoughCircles(gray, cv.HOUGH_GRADIENT, 1, rows/17,
# param1=100, param2=30,
# minRadius=1, maxRadius=50)
circles = cv.HoughCircles(gray, cv.HOUGH_GRADIENT, 1, 100,
param1=100, param2=30,
minRadius=1, maxRadius=50)
# Print the number of found circles:
print('Number of detected circles:', circles.shape[1])
# Retrieve the coordinates of all found circles:
if circles is not None:
circles = np.uint16(np.around(circles))
for i in circles[0, :]:
center = (i[0], i[1])
# circle center
cv.circle(src, center, 1, (0, 100, 100), 3)
# circle outline
radius = i[2]
cv.circle(src, center, radius, (255, 0, 255), 3)
#tot_found_circle=tot_found_circles+1
# Print the number of found circles:
#print('NUmber of found circles:', tot_found_circles)
# Show circle in original image:
cv.imshow("detected circles", src)
cv.waitKey(0)
return 0
if __name__ == "__main__":
main(sys.argv[1:])``