【发布时间】:2018-04-28 13:06:35
【问题描述】:
我有两张尺寸相同的图片。
图像是 numpy 数组,我正在迭代像素并像这样获取每个像素的 r g b:
for i in range(len(img1)):
for j in range(len(img1[0])):
pimg1 = img1[i][j]
pimg2 = img2[i][j]
r1 = pimg1[0]
r2 = pimg2[0]
g1 = pimg1[1]
g2 = pimg2[1]
b1 = pimg1[2]
b2 = pimg2[2]
然后我获取两个像素之间的 MSE,例如:
mse = math.sqrt(((r1 - r2) ** 2) + ((g1 - g2) ** 2) + ((b1 - b2) ** 2))
问题是这太慢了。有没有更有效的方法来做到这一点?
最终目标
我希望将两个图像之间具有一定“阈值”相似性的所有像素设为黑色。以及所有与img2像素相差较大的像素。
if mse > threshold:
new_img[i][j] = pimg2
else:
new_img[i][j] = [0, 0, 0] # black pixel
背景图片
输入图片
我正在捕捉如下图像:
for frame in cam.camera.capture_continuous(raw, format="rgb", use_video_port=True):
img = frame.array
cv2.imwrite("image.png", img)
我得到的图像如下:
dir = 'images/compare/'
bg = cv2.imread(dir+'bg.png')
img = cv2.imread(dir+'in.png')
【问题讨论】: