OpenCV将具有相似值的像素设置为特定值

时间:2018-04-02 15:34:14

标签: python opencv

我是OpenCV的初学者,我正在尝试创建这样的图像:

原始图片

Original image

期望的结果

Desired result

我尝试迭代遍历图像的每个像素,然后将其设置为特定值,但这种方法非常慢。

import cv2

cv2.namedWindow("window")
image = cv2.imread("lena.png",0)

w,h = image.shape

for i in range(0,w):
    for j in range(0,h):
        if (image[i,j] >= 0 and image[i,j] <= 50):
            image[i,j] = 25
        elif (image[i,j] > 50 and image[i,j] <= 100):
            image[i,j] = 75
        elif (image[i,j] > 100 and image[i,j] <= 150):
            image[i,j] = 125
        elif (image[i,j] > 150 and image[i,j] <= 200):
            image[i,j] = 175
        elif (image[i,j] > 200 and image[i,j] <= 255):
            image[i,j] = 225


cv2.imshow("window",image)

cv2.waitKey(0)
cv2.destroyAllWindows()

有谁知道这样做的方法或方法? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

您尝试执行的操作称为图像池。你可以使用skimage&lt; block_reduce方法

skimage.measure.block_reduce(image, block_size, func=<function sum>, cval=0)
  

通过将函数应用于本地块来下采样图像

http://scikit-image.org/docs/dev/api/skimage.measure.html#skimage.measure.block_reduce