Python 使用opencv用另一个图像填充空白图像
我将python与cv2库一起使用。我有一个小图像,我想填补一些空白。假设空白图像如下:(每个x表示一个像素,[255255255 ]) x xPython 使用opencv用另一个图像填充空白图像,python,opencv,Python,Opencv,我将python与cv2库一起使用。我有一个小图像,我想填补一些空白。假设空白图像如下:(每个x表示一个像素,[255255255 ]) x x x x x x x x x x 我想将它的一些部分交换到另一个图像的数据(每个a表示另一个图像的一个像素) x x xax xax x x x x 最快的方法是什么?我试着在每个像素上循环并完成这项工作,但似乎效率很低 import cv2 import numpy as np tmp=np.zeros((1024,768,3),np.uint_8)
x x
x x
x x x x 我想将它的一些部分交换到另一个图像的数据(每个a表示另一个图像的一个像素) x x
xax
xax
x x x x 最快的方法是什么?我试着在每个像素上循环并完成这项工作,但似乎效率很低
import cv2
import numpy as np
tmp=np.zeros((1024,768,3),np.uint_8)
image= .. #image captured from camera
for(i in range(480)):
for(j in range(640)):
tmp[i+144][j+197]=image[i][j]
简而言之,您可以这样做:
Size taille = new_image.size(); // New_image is the image to be inserted
Mat white_roi( white_image, Rect( x, y, taille.width, taille.height ) );
// white_roi is a subimage of white_image
// that start from the point (x,y)
// and have the same dimension as a new_image
new_image.copyTo( white_roi ); // You copy the new_image into the white_roi,
// this in the original image
这是C++代码,你必须适应Python。< /P> < P>首先将图像更改为数组,然后替换.< /P> 试试这个:
import cv2
import numpy as np
tmp=np.zeros((1024,768,3),np.uint_8)
image= .. #image captured from camera
src = np.array(image)
tmp[144:, 197:] = src
首先确保元素的数量正确。如果您想替换一些大部件,如矩形,则使用ROI进行替换(其他答案已经解释过)。但是如果你处理的是随机分布的像素或复杂的形状,那么你可以试试这个 1) 为要替换的零件创建一个掩码二进制图像MaskImage,因为true rest设置为false 2)
Result=MasterImage
和(非(MaskImage))+PickerImage
和MaskImage
PS:我没有使用python,因为我不懂python,而且它的表达式非常简单。祝你好运使用numpy切片
tmp = np.zeros((1024,768,3),np.uint_8)
img[y1:y2, x1:x2] = tmp[y3:y4, x3:x4] # given that (y2-y1) = (y4 - y3) and same for x
或者用一些颜色填充它
img[y1:y2, x1:x2] = (255, 255, 255)
看看opencv文档中的感兴趣区域哪个是感兴趣的区域?嗯,它似乎给出了一个错误:
a=np.zeros((5,5,3),np.uint8)b=np.zeros((3,3,3),np.uint8)a[:,:]=[255255]a[1:,1:][b;它说:value错误:操作数不能与形状(4,4,3)(3,3)一起广播。
谢谢,但python中不存在Mat类,所以迁移这段代码有点困难