Verificamos de forma cada una de las noticias en nuestro sitio web con el objetivo de enseñarte en todo momento información certera y certera.
Solución:
El camino a seguir es configurar una región de interés (ROI) correspondiente mediante el uso de cv::Rect
. Como ya tiene las ubicaciones superior izquierda e inferior derecha como cv::Points
, obtienes esto más o menos gratis. Luego, simplemente use, por ejemplo, cv::GaussianBlur
solo en ese ROI. Usando la API de C++, este enfoque funciona para muchos métodos de OpenCV.
El código es bastante simple, vea el siguiente fragmento:
// (Just use your frame instead.)
cv::Mat image = cv::imread("path/to/your/image.png");
// Top left and bottom right cv::Points are already defined.
cv::Point topLeft = cv::Point(60, 40);
cv::Point bottomRight = cv::Point(340, 120);
// Set up proper region of interest (ROI) using a cv::Rect from the two cv::Points.
cv::Rect roi = cv::Rect(topLeft, bottomRight);
// Only blur image within ROI.
cv::GaussianBlur(image(roi), image(roi), cv::Size(51, 51), 0);
Para alguna entrada ejemplar como esta
el código anterior genera el siguiente resultado:
¡Espero que ayude!
Aquí está el equivalente de Python a la respuesta de @HansHirse. La idea es la misma excepto que usamos Numpy slicing para obtener el ROI
import cv2
# Read in image
image = cv2.imread('1.png')
# Create ROI coordinates
topLeft = (60, 40)
bottomRight = (340, 120)
x, y = topLeft[0], topLeft[1]
w, h = bottomRight[0] - topLeft[0], bottomRight[1] - topLeft[1]
# Grab ROI with Numpy slicing and blur
ROI = image[y:y+h, x:x+w]
blur = cv2.GaussianBlur(ROI, (51,51), 0)
# Insert ROI back into image
image[y:y+h, x:x+w] = blur
cv2.imshow('blur', blur)
cv2.imshow('image', image)
cv2.waitKey()
Si posees alguna incertidumbre o forma de aumentar nuestro artículo puedes añadir una interpretación y con gusto lo observaremos.