Как я могу получить значение RGB конкретной прямой линии на изображении? - PullRequest
0 голосов
/ 20 сентября 2019

Это изображение с двумя красными (независимо от цвета) линиями.Я хочу обнаружить строку, а затем хочу получить значения RGB этой строки.Как я могу сделать это, используя OpenV или любую другую библиотеку python.

enter image description here

Я пробовал такой код, который выводит список многих значений:

import cv2

img = cv2.imread('C:/Users/Rizwan/Desktop/result.jpg')

print(img)

1 Ответ

1 голос
/ 24 сентября 2019

Одна из возможностей - перейти к HSV colourspace и искать красные тона.Красные труднее найти, потому что они колеблются в пределах 0 и 360 градусов на колесе Оттенок / Насыщенность / Значение, поэтому я переверну изображение и поищу голубой, в котором красный цвет будет отображаться на перевернутом изображении.

#!/usr/bin/env python3

import numpy as np
import cv2

# Load the image as BGR
im = cv2.imread('strip.jpg')

# Invert image, i.e. 255-im, to make reds into cyan and convert to HSV
hsv = cv2.cvtColor(255-im, cv2.COLOR_BGR2HSV) 

# Set low and high limit for the tones we want to identify - based on Hue of cyan=90 in OpenCV 
lo = np.uint8([80,30,0])
hi = np.uint8([95,255,255]) 

# Mask all red pixels
mask = cv2.inRange(hsv,lo,hi)

# Save mask for fun
cv2.imwrite('result1.png',mask)

Это дает следующее:

enter image description here

Продолжая работать с кодом, мы теперь применяем эту маску к исходному изображению, чтобы затемнить неинтересные пиксели:

# Zero out to black all uninteresting pixels in original image
im[mask<255] = 0
cv2.imwrite('result2.png',im)

enter image description here

# Reshape as a tall column of R, G, B values and find unique rows, i.e. unique colours
unique = np.unique(im.reshape(-1,3), axis=0)
print(unique)

Это дает около 700 триплетов RGB.Продолжая, возьмите уникальные цвета и напишите изображение, чтобы мы могли их видеть:

# This line is a hack based solely on the current image just for illustration
cv2.imwrite('unique.png',unique[:625,:].reshape((25,25,3)))

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...