gpt4 book ai didi

ios - 如何比较两幅图像并突出差异?

转载 作者:行者123 更新时间:2023-11-29 05:51:53 26 4
gpt4 key购买 nike

在我的应用程序中,我需要比较 2 个图像并用颜色突出显示差异。例如,我正在比较 UIImage1 和 UIImage2,这两个图像是相同的,只是 UIImage2 中有一个小方 block 。我需要用红色突出显示额外的方形对象并在 ImageView 中显示,否则我想知道差异的 x 和 y 方向。

我已经尝试过下面的代码。在此代码中,我只能更改差异的 alpha 值。无法更改差异的颜色。

UIImage* bottomImage = [UIImage imageNamed:@"j1.jpg"];
UIImage* topImage = [UIImage imageNamed:@"j2.jpg"];
UIImageView* imageView = [[UIImageView alloc] initWithImage:bottomImage];
UIImageView* subView = [[UIImageView alloc] initWithImage:topImage];
subView.alpha = 0.5; // Customize the opacity of the top image.
[imageView addSubview:subView];
UIGraphicsBeginImageContext(imageView.frame.size);
[imageView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage* blendedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
_imageview.image = blendedImage;

图像1:

enter image description here

图像2:

enter image description here

差异图像:

enter image description here

但我想要的是这样的:

enter image description here

我是 OpenCV 的新手,代码是用 python 编写的。谁能帮我把这段代码改成objective-c?我尝试过,但只收到错误。

https://stackoverflow.com/a/27500479/6859041

im = cv2.imread('c:\\diff.jpg')
im1 = cv2.imread('c:\\Edited.jpg')


imgray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
ret,thresh = cv2.threshold(imgray,127,255,0)
contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)

cv2.drawContours(im1, contours, -1, (0,255,0), 1)
cv2.imwrite("c:\\see_this.jpg", im1)

如何将此代码更改为 Objective C?

谢谢。

最佳答案

使用 ImageMagick,这非常容易。

img1.jpg enter image description here

img2.jpg enter image description here

compare -fuzz 25% -metric rmse -lowlight-color transparent -highlight-color red img1.jpg img2.jpg diffimage.jpg
1562.23 (0.0238381)


enter image description here

您可以在 Python Wand 中执行相同的操作,它调用 ImageMagick 并获取与上面相同的图像和值。 (致谢 emcconville)

#!/bin/python3.7
from wand.image import Image
from wand.display import display
from wand.api import library

with Image(filename='img1.jpg') as bimg:
with Image(filename='img2.jpg') as fimg:
# We have to call the C method directly, and calculate the percentage.
library.MagickSetImageFuzz(bimg.wand, 0.25 * bimg.quantum_range)
bimg.artifacts['compare:highlight-color'] = 'red'
bimg.artifacts['compare:lowlight-color'] = 'transparent'
diff_img, diff_val = bimg.compare(fimg, 'root_mean_square')
print(diff_val)
with diff_img:
diff_img.save(filename='img1_img2_diff.jpg')

关于ios - 如何比较两幅图像并突出差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55587561/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com