Bueno, esta es una solución si desea que el fondo sea distinto de un color negro sólido. Solo tenemos que invertir la máscara y aplicarla en una imagen de fondo del mismo tamaño y combinar el fondo y el primer plano. Un profesional de esta solución es que el fondo puede ser cualquier cosa (incluso otra imagen).
Este ejemplo se modificó de Hough Circle Transform. La primera imagen es el logotipo de OpenCV, en segundo lugar la máscara original, en tercer lugar el fondo + primer plano combinado.

# http://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_houghcircles/py_houghcircles.html
import cv2
import numpy as np
# load the image
img = cv2.imread('E:\\FOTOS\\opencv\\opencv_logo.png')
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# detect circles
gray = cv2.medianBlur(cv2.cvtColor(img, cv2.COLOR_RGB2GRAY), 5)
circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 1, 20, param1=50, param2=50, minRadius=0, maxRadius=0)
circles = np.uint16(np.around(circles))
# draw mask
mask = np.full((img.shape[0], img.shape[1]), 0, dtype=np.uint8) # mask is only
for i in circles[0, :]:
cv2.circle(mask, (i[0], i[1]), i[2], (255, 255, 255), -1)
# get first masked value (foreground)
fg = cv2.bitwise_or(img, img, mask=mask)
# get second masked value (background) mask must be inverted
mask = cv2.bitwise_not(mask)
background = np.full(img.shape, 255, dtype=np.uint8)
bk = cv2.bitwise_or(background, background, mask=mask)
# combine foreground+background
final = cv2.bitwise_or(fg, bk)
Nota: Es mejor utilizar los métodos de OpenCV, ya que se han optimizado.
¿Qué estás tratando de hacer? ya que tiene soporte numpy, puede usar funciones numpy. –
Estoy haciendo algunos filtros en el espacio de color HSV a la imagen original – pzo