我想在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是绝对必需的吗?

Python相关问答推荐

GEKKO:已知延迟的延迟系统的参数估计

Altair -箱形图边界设置为黑色,中线设置为红色

telegram 机器人API setMyName不起作用

如何处理必须存在于环境中但无法安装的Python项目依赖项?

Tkinter -控制调色板的位置

无法导入已安装的模块

Pandas 除以一列中出现的每个值

在应用循环中间保存pandas DataFrame

Python:在类对象内的字典中更改所有键的索引,而不是仅更改一个键

通过Selenium从页面获取所有H2元素

按列分区,按另一列排序

按顺序合并2个词典列表

用合并列替换现有列并重命名

使用groupby Pandas的一些操作

Stacked bar chart from billrame

给定高度约束的旋转角解析求解

如何启动下载并在不击中磁盘的情况下呈现响应?

如何在Pyplot表中舍入值

当条件满足时停止ODE集成?

如何将一组组合框重置回无 Select tkinter?