我是OpenCV的初学者,我正在尝试创建这样的图像:
原始图片
期望的结果
我尝试迭代遍历图像的每个像素,然后将其设置为特定值,但这种方法非常慢。
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()
有谁知道这样做的方法或方法? 提前谢谢。
答案 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