我想在Python中使用OpenCV将特定的阈值应用于灰度图像,其方式与OpenCV的cv2.THRESH_TOZERO
类似,但有一个特殊性,即只能从左侧的暗像素应用到右侧的亮度像素.
也就是说,对于给定的像素(x,y)
,如果像素(x-1, y)
足够暗(比方说从0到5的值),那么在范围从0到30(比方说)的同一行中的所有连续像素(x+i,y)
应该变为黑色,直到找到较亮的像素.
我想在Python中使用OpenCV将特定的阈值应用于灰度图像,其方式与OpenCV的cv2.THRESH_TOZERO
类似,但有一个特殊性,即只能从左侧的暗像素应用到右侧的亮度像素.
也就是说,对于给定的像素(x,y)
,如果像素(x-1, y)
足够暗(比方说从0到5的值),那么在范围从0到30(比方说)的同一行中的所有连续像素(x+i,y)
应该变为黑色,直到找到较亮的像素.
我认为下面的代码实现了您所描述的功能:
import numpy as np
height = 200
width = 200
threshold1 = 5
threshold2 = 30
image = np.random.randint(0, 255, (height, width), dtype=int)
for i in range(height):
dark_enough = False
for j in range(width):
if not dark_enough and image[i, j] < threshold1:
dark_enough = True
elif dark_enough and image[i, j] < threshold2:
image[i, j] = 0
elif dark_enough:
dark_enough = False
诚然,这不使用OpenCV.OpenCV是绝对必需的吗?