import cv2 import numpy as np #加载两幅图像 img1 =cv2.imread('d:/pyc/tuxiang/1/bai.jpg') img2 =cv2.imread('d:/pyc/tuxiang/1/hei2.jpg') #把logo放在图像的右上角,创建ROI rows1,cols1,channels1 = img1.shape rows,cols,channels = img2.shape print(rows1,cols1,channels1) print(rows,cols,channels) roi = img1[0:rows,cols1:(cols1-cols)] #截取图像的某个区域 #[0:180,500-300]第二张图的300, #cv2.imshow("roi",roi) #cv2.waitKey(0) #现在创建logo的掩码,并同时创建其相反掩码 #得到一个黑白图的logo img2gray = cv2.cvtColor(img2,cv2.COLOR_BGR2GRAY) ret,mask = cv2.threshold(img2gray,240,255,cv2.THRESH_BINARY) #240为阈值,如果像素点的值大于240,则取白色,如果小于240就取黑色 #cv2.imshow("1",img2gray) #cv2.waitKey(0) #mask背景依旧是白色,彩色logo是黑色 mask_inv = cv2.bitwise_not(mask) #现在将ROI logo的区域涂黑 img1_bg = cv2.bitwise_and(roi,roi,mask = mask) #仅从logo图像中提取logo区域 img2_fg = cv2.bitwise_and(img2,img2,mask = mask_inv) #cv2.imshow("1",img2_fg) #cv2.waitKey(0) #将logo放入ROI并修改主图像 dst = cv2.bitwise_and(img1_bg,img2_fg) img1[0:rows,cols1:(cols1-cols)] = dst cv2.imshow('Result',img1) cv2.waitKey(0) cv2.destroyAllWindows()
时间: 2024-04-15 18:31:45 浏览: 98
通过查看你提供的代码,我注意到你的问题可能出在这里:
```python
roi = img1[0:rows, cols1:(cols1-cols)]
```
这里的 `cols1` 和 `cols` 变量名可能混淆导致错误。根据你的描述,我猜测 `cols1` 是图像 `img1` 的列数,而 `cols` 是图像 `img2` 的列数。但实际上,根据你的代码,`cols1` 应该是 `img2` 的列数。
请尝试将该行代码修改为:
```python
roi = img1[0:rows, (cols1-cols):cols1]
```
这样应该能够解决你遇到的问题。如果还有其他问题,请随时提问。
阅读全文