首页 > 解决方案 > 如何使用python从opencv中的黑色文本中分离黑色曲线

问题描述

import numpy as np
import cv2
im = cv2.imread("goldstandard.png")
nemo = cv2.cvtColor(im, cv2.COLOR_BGR2RGB)
hsv_nemo = cv2.cvtColor(nemo, cv2.COLOR_RGB2HSV)
dictionaryHSV = {
    "greenCombo": [[30, 126, 87], [70, 255, 250]],
    'red': [[0, 92, 212], [10, 265, 255]],
    'blue': [[110, 7, 214], [130, 255, 255]],
    'black': [[0, 0, 0], [10, 10, 40]],
    'another1': [[20, 245, 151], [40, 255, 231]],
    'pink': [[140, 126, 215], [160, 146, 255]]
}

for r1, r2 in dictionaryHSV.values():
    lower = np.array(r1)
    upper = np.array(r2)
    mask = cv2.inRange(hsv_nemo, lower, upper)
    # cv2.imshow("masked",mask)
    # cv2.waitKey(0)
    nm = np.ones((nemo.shape[0], nemo.shape[1], nemo.shape[2]), dtype=np.uint8)
    for i in range(nm.shape[0]):
        for j in range(nm.shape[1]):
            nm[i][j] = (255, 255, 255)
    result = cv2.bitwise_and(nm, nm, mask=mask)
    cv2.imshow("mappped", result)
    cv2.waitKey(0)

我有曲线图图像,我想根据颜色分离所有曲线当我遇到黑色曲线时遇到问题我得到黑色曲线以及图中的黑色文本我只想得到曲线而不是文本。我使用“HSV”颜色空间中的颜色范围来识别颜色。提前致谢。

图像

标签: pythonopencvcomputer-vision

解决方案


  1. 提取正方形内的区域。
  2. 删除所有非黑色像素。
  3. 找到所有轮廓。
  4. 选择一个最大的轮廓 - 这将是你的曲线。

推荐阅读