python - 尝试将图像与 openCV 混合
问题描述
img1 = cv.imread('face.png',1)
img2 = cv.imread('flower.png',1)
img2= cv.resize(img2,(642,640))
cv.imshow('img1',img1)
cv.imshow('img2',img2)
dst = cv.addWeighted(img1,0.7,img2,0.3,1)
cv.imshow('dst',dst)
cv.waitKey(0)
cv.destroyAllWindows()
给我这个
错误:OpenCV(4.2.0)../modules/core/src/arithm.cpp:666:错误:(-209:输入参数的大小不匹配)操作既不是“数组操作数组”(其中数组有相同的大小和相同的通道数),也不是函数'arithm_op'中的'array op scalar',也不是'scalar op array'
解决方案
它应该是:
img2= cv.resize(img2,(640,642))
原因是,当您检索图像形状时,它分别返回高度和宽度。
(h, w) = img.shape[:2]
然后分别使用宽度和高度调整第二张图像的大小。
img2 = cv.resize(img2, (w, h))
但是最好在使用 之前断言两个图像具有相同的形状,addWeighted
以确保两个图像的形状相同。
assert img1.shape == img2.shape
结果:
代码:
import cv2 as cv
img1 = cv.imread('face.png', 1)
img2 = cv.imread('flower.png', 1)
(h, w) = img1.shape[:2]
img2 = cv.resize(img2, (w, h))
assert img1.shape == img2.shape
cv.imshow('img1', img1)
cv.imshow('img2', img2)
dst = cv.addWeighted(src1=img1, alpha=0.7, src2=img2, beta=0.3, gamma=1.0)
cv.imshow('dst', dst)
cv.waitKey(0)
cv.imwrite("dst.png", dst)
cv.destroyAllWindows()
推荐阅读
- json - 解组 JSON 保留空值
- javascript - 在父子组件中保持状态(复选框和复选框)
- angular - 使用服务和组件实现命令设计模式时遇到问题 [初学者 Angular]
- perl - 用于 HTML 的 Perl 多字节字符编码
- javascript - (React)仅在满足条件时如何渲染组件
- c - 如何释放我使用的指针?使用后是否可以释放指针?
- python - 结果值存储在数组或 json 中
- laravel - laravel 我正在制作一个基于网络的提醒系统,可以在短信中发送消息
- python - 将来自rest api的JSON提取传递给python中的SQL Server
- javascript - 我如何在 Javascript 中使用 Bind