使用 OpenCV Python 在二值图像中查找第一个黑色像素

本教程将指导您使用 OpenCV Python 库中的 cv2.findFirstNonZero() 函数查找二值图像中第一个黑色像素的坐标。我们将提供从左到右和从右到左查找像素的分步代码示例。

代码示例

以下 Python 代码演示了如何在给定二值图像的某一行中找到从左到右和从右到左的第一个黑色像素的坐标:

import cv2
import numpy as np

# 加载二值图像
image = cv2.imread('binary_image.png', 0)

# 指定要查找的行数
row_number = 100

# 从左向右查找第一个黑色像素
left_to_right = cv2.findFirstNonZero(image[row_number, :])
if left_to_right is not None:
    x_left_to_right = left_to_right[0][0]
    print('从左向右看的第一个黑色像素坐标:', x_left_to_right)
else:
    print('该行没有黑色像素')

# 从右向左查找第一个黑色像素
right_to_left = cv2.findFirstNonZero(np.flip(image[row_number, :], axis=0))
if right_to_left is not None:
    x_right_to_left = image.shape[1] - right_to_left[0][0] - 1
    print('从右向左看的第一个黑色像素坐标:', x_right_to_left)
else:
    print('该行没有黑色像素')

解释

  1. 导入必要的库: 首先,导入 cv2 (OpenCV) 和 numpy 库。
  2. 加载二值图像: 使用 cv2.imread() 函数加载您的二值图像。确保将 'binary_image.png' 替换为您的二值图像文件名。
  3. 指定行号:row_number 变量设置为要在其中查找第一个黑色像素的行号。
  4. 从左到右查找:
    • 使用 cv2.findFirstNonZero() 函数查找给定行中第一个非零像素 (白色像素) 的坐标。
    • 如果找到非零像素,则 left_to_right 将包含其坐标,否则为 None
    • 如果找到,则提取并打印 x 坐标。
  5. 从右到左查找:
    • 使用 np.flip() 函数水平翻转该行。
    • 类似于从左到右的搜索,使用 cv2.findFirstNonZero() 查找第一个非零像素。
    • 如果找到,则根据图像宽度和找到的坐标计算从右边缘开始的 x 坐标。

此代码演示了如何在二值图像中有效地找到第一个黑色像素。通过调整代码,您可以修改它以满足您的特定需求,例如查找不同颜色或处理多行。

OpenCV Python: 查找二值图像某一行第一个黑色像素坐标

原文地址: http://www.cveoy.top/t/topic/fKdu 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录