opencv - 使用 OpenCv 重叠图像的问题
问题描述
我正在尝试将徽标图片与另一张图片重叠,但得到了这个:
error on line 10 : (-215:Assertion failed) (mtype == CV_8U || mtype == CV_8S) && _mask.sameSize(*psrc1) in function 'cv::binary_op'
我试图运行的代码片段如下:
img2 = cv2.imread('Capture.jpg' , cv2.IMREAD_COLOR)
logo = cv2.imread('pyt.jpg')
rows , cols , channel = img2.shape
roi = img2[0:rows , 0:cols]
gray_img = cv2.cvtColor(logo , cv2.COLOR_BGR2GRAY)
ret , mask = cv2.threshold(gray_img , 220 , 255 , cv2.THRESH_BINARY)
#cv2.imshow('mask' , mask)
mask_inv = cv2.bitwise_not(mask)
#cv2.imshow('img' , mask_inv)
img_bg = cv2.bitwise_and(roi , roi , mask = mask_inv) #error on this line
#img_fg = cv2.bitwise_and(logo, logo , mask = mask)
#dst = cv2.add(img_bg , img_fg)
#logo[0:row , 0:col] = dst
#cv2.imshow('img' , img1)
cv2.waitKey(0)
cv2.destroyAllWindows()
解决方案
诀窍是掩码应该与目标具有相同的大小。您的代码中的错误来自这部分:
rows , cols , channel = img2.shape
roi = img2[0:rows , 0:cols]
roi
应该有标志的大小,而不是整个图像!
与其使用按位运算,不如使用掩码复制徽标要简单得多,当然要注意 ROI 大小:
rows , cols = logo.shape[:2]
roi = img2[0:rows , 0:cols]
cv.copyTo(logo, mask, roi)
推荐阅读
- shap - 获取使用 kNN 进行的预测的 SHAP 值
- database - INSERT INTO 错误和 PLS-00231 错误函数可能无法在 SQL 中使用
- javascript - 丢弃 child 会触发 parent 的“drop”事件侦听器。我想用特定于子的“drop”覆盖该事件侦听器
- python - 在 tensorflow 中实现 KL 预热:回调中的 tf.keras.backend.variable 在 epochs 上不稳定
- modelica - 通过从 Dymola 导出到 FMU,所有参数默认为“可调”,但应为“固定”
- python - Python tkinter - 自动单击 Treeview 中的选定项目
- php - 数据未添加到自定义 wordpress 表中
- reactjs - 测试 onChange 事件,无论采用何种方法,值都无法匹配
- javascript - html表单,提交并停留在页面上的同一位置
- python - 将图像 url 插入单元格 tablewidget python