Определение краев цвета на изображении - PullRequest
0 голосов
/ 23 мая 2019

Как показано на этом рисунке, я хочу пометить края трех ветвей фиолетовым цветом и отфильтровать другую область как чисто белый цвет (или другой цвет фона).Я использую Laplacian и Sober для создания градиента изображения, а затем использую метод Canny для определения краев.Однако это не соответствует моим ожиданиям.

import cv2
import numpy as np
from matplotlib import pyplot as plt

if __name__ == '__main__' :

    # Read image
    im = cv2.imread("crop.jpg")

    # Calculation of Laplacian 
    laplacian = cv2.Laplacian(imCrop,cv2.CV_64F) 

    edges = cv2.Canny(laplacian,35,35)

enter image description here

Ответы [ 2 ]

1 голос
/ 23 мая 2019

Попробуйте улучшить его, чтобы получить свою цель:

import cv2

image = cv2.imread("test.jpg")
#convert to hsv
i = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
i[: ,:, 0]=0
i[: ,:, 2]=0
#s channel 
cv2.imshow("s channel", i)

Image output with s channel

0 голосов
/ 24 мая 2019

Я придумал решение, как показано ниже,

import cv2
import numpy as np
from matplotlib import pyplot as plt

if __name__ == '__main__' :

    # Read image
    im = cv2.imread("crop.jpg")
    a=np.copy(im)

    a[:,:,0]=255
    a[:,:,1]=255
    a[a>150]=255

    plt.imshow(a)
...