python - 在opencv中用掩码替换部分图像
问题描述
我有一个 384x384 像素的图像。我想屏蔽或替换图像中间的所有内容,所以我只有图像的边框。为此,我创建了一个 352x352 像素的蒙版(只是一个黑色图像)。现在我想把这个蒙版放在图像的中间,这样它到每个角落的距离都是 32 像素。
我想到了这样的事情,但它不起作用:
mask = cv2.imread('C://Users//but//Desktop//mask.png')
hh, ww, dd = mask.shape
image = cv2.imread('C://Users//but//Desktop//Train//OK//train_image1.jpg')
x = 32
y = 352
print('left:', x, 'top:', y)
# put mask into black background image
mask2 = np.full_like(image, 255)
mask2[x:x + hh, y:y + ww] = mask
# apply mask to image
img_masked = cv2.bitwise_and(image, mask2)
cv2.imshow('masked image', img_masked)
cv2.waitKey(0)
cv2.destroyAllWindows()
我得到的错误是:
Traceback (most recent call last):
File "C:/Users/but/PycharmProjects/SyntheticDataWriter.py", line 17, in <module>
mask2[x:x + hh, y:y + ww] = mask
ValueError: could not broadcast input array from shape (352,352,3) into shape (352,32,3)
解决方案
推荐阅读
- sql - 更新触发器中的多个表,其中一个表用于触发器激活
- mysql - 成绩高于班级平均分的学生名单:
- php - 使用 flowroute API 使用 API 发送 SMS
- flutter - 我如何下载颤振原生飞溅
- postgresql - 如何使用不使用转储/恢复的表、数据、函数、序列复制整个模式?
- angular - Angular routerLink 导航到“嵌套”页面上的错误路径
- search - 如何批量删除多个文件中的 html 块?
- hibernate - Nonstrict-read-write 中的脏读是什么?
- reactjs - 找不到所需的“intl”对象。
需要存在于组件祖先中。在使用 wrapper.html() - spring-batch - Spring Batch CommandLineJobRunner 带参数