"""
Blur Regions Of Interest
:return:
"""
for coord in coords:
roi = image[coord[1]:coord[3], coord[0]:coord[2]]
if (roi.shape[0] * roi.shape[1]) > 0:
roi_blurred = cv2.GaussianBlur(roi, (101, 101), 0)
image[coord[1]:coord[3], coord[0]:coord[2]] = roi_blurred
return image
Hello, my name is Yuta.
I would like to speed up the process of blurring faces.
I would like to know how to speed up the pasting program.
Currently, it is taking about 0.3 seconds.
I would like to process about 100,000 images, so if there is a way to speed up the process, please let me know.
I’m wondering if I’m using “for” statements and that’s the problem.
First, the large aperture of the gaussian kernel can make the processing slow. Try cv2.blur() or cv2.boxFilter() and see if it’s faster.
You can try to blur all the image and copy it over the original using a mask; something like (untested code):
img_blurred = cv2.blur(image,(101,101))
mask = np.zeros(...same shape as image...) # create a black mask
for coord in coords:
mask[coord[1]:coord[3], coord[0]:coord[2]]=1 # set the ROIs to 1
img_blurred.copyTo(image,mask) # copy the blurred image on top the original using the mask
(not sure if this will speed up the processing, but still worth trying).
If it’s still slow, try to speed up the blurring using GPU. It should have a big impact on the speed. Here’s the code for CUDA (on Nvidia cards); for AMD cards you can try with OpenCL: