让我们来直截了当地说。
我有一个私人项目,要使用OpenCV中的边界框来屏蔽或像素化图像,类似于审查图像,受到这篇论文的启发:
我已经找到了使用Keras对屏蔽区域进行分类的方法,但仍然不知道如何使用边界框来像素化分类区域,并将其覆盖到原始图像上。任何帮助都将不胜感激。
以下是我想要执行的过程示例:
让我们来直截了当地说。
我有一个私人项目,要使用OpenCV中的边界框来屏蔽或像素化图像,类似于审查图像,受到这篇论文的启发:
我已经找到了使用Keras对屏蔽区域进行分类的方法,但仍然不知道如何使用边界框来像素化分类区域,并将其覆盖到原始图像上。任何帮助都将不胜感激。
以下是我想要执行的过程示例:
输入图像和要提取的ROI
提取的ROI
像素化的ROI
结果
代码
import cv2
def pixelate(image):
# Get input size
height, width, _ = image.shape
# Desired "pixelated" size
h, w = (16, 16)
# Resize image to "pixelated" size
temp = cv2.resize(image, (w, h), interpolation=cv2.INTER_LINEAR)
# Initialize output image
return cv2.resize(temp, (width, height), interpolation=cv2.INTER_NEAREST)
# Load image
image = cv2.imread('1.png')
# ROI bounding box coordinates
x,y,w,h = 122,98,283,240
# Extract ROI
ROI = image[y:y+h, x:x+w]
# Pixelate ROI
pixelated_ROI = pixelate(ROI)
# Paste pixelated ROI back into original image
image[y:y+h, x:x+w] = pixelated_ROI
cv2.imshow('pixelated_ROI', pixelated_ROI)
cv2.imshow('image', image)
cv2.waitKey()
注意: ROI包围框的坐标是通过使用如何在不进行猜测和检查的情况下获取ROI边界框坐标中的脚本找到的。对于您的情况,我将假设您已经获得了cv2.boundingRect
获得的x,y, w, h
边界框坐标。