【发布时间】:2020-02-05 11:28:03
【问题描述】:
您好,我有一组大小为 200x200 的图像,我想将这些图像分成 10 个大小为 20x20 的块(每个图像)。图像分块后,
1) 我想将图像 1 的第一个块与图像2 的第一个块、图像 3 和第二个块与图像2 的第二个块、图像 3 等进行比较。
2)在比较块之后,应该使用具有最大值的块并将其放入最终图像中,以便最终图像具有来自image1,image2或image3的最大值块。
是否可以进行这样的比较并产生新的图像。
image = cv2.resize(im,(200,200))
image1 = cv2.resize(im1,(200,200))
hs = round(h/10)
ws = round(w/10)
hs1 = round(hs1/10)
ws1 = round(ws1/10)
resized = cv2.resize(image, (ws,hs), interpolation = cv2.INTER_AREA)
resized1 = cv2.resize(image1, (ws1,hs1), interpolation = cv2.INTER_AREA)
结果如图here
图片可以访问here。
【问题讨论】:
-
如果你把一个 200x200 的图像分成 20x20 的块,你会得到 100 个块,而不是 10 个,对吧?请在您的问题中添加几张图片,并说明结果应该是什么样子。
-
如何将 20x20 块与另一个块进行比较?那是 400 像素,如果图像是 RGB,则为 1,200 个值,那么您实际比较的是什么,结果是什么?
-
我想将这些块与其他块进行比较。我能够逐像素(像素强度)比较图像。但我想比较块。我认为的一种方法是取每个块的平均值并将其与图像的所有相应块进行比较。但我不知道该怎么做。
-
我已经在我的回答中添加了一些信息 - 这是您期望结果的样子吗?
-
@MarkSetchell 是否可以将输出图像生成为原始图像。这是我使用
numpy.maximum.reduce()时得到的。但我期待在比较之后,最终图像会像原始图像一样(像普通图像)
标签: python image opencv image-processing