Для моего исследования я хотел бы скомпилировать код для изменения значения пикселя изображения с RGB на HSV, а затем на RGB, если значение V превышает определенное значение.Но для этого я должен использовать cv2.cvtColor(src,code)
.Когда я использовал cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
, он работал хорошо!Но когда я использовал cv2.cvtColor( list or str , cv2.COLOR_HSV2BGR)
, он сделал ОШИБКУ .... Я думаю, что src должен быть имиджем.К сожалению, мне пришлось использовать список типов или str или ndarray. Я очень старался сделать их изображениями, но я думаю, что это действительно сложная задача. Если вы запустите приведенный ниже код, массив numpy будет показан сначала только с V-каналом.После закрытия окна я вижу эту ошибку.Трассировка (последний вызов был последним):
Файл "/home/sjw/PycharmProjects/untitled/hiccc.py", строка 18, в img [i] [j] = cv2.cvtColor (y, cv2.COLOR_HSV2BGR) TypeError: src - это не пустой массив и не скаляр
Но мой вопрос не только в том, что я знаю эту ошибку, но и сделал законченный код.Мне нужна твоя помощь .. Пожалуйста ....: (
import cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread('/home/sjw/Pictures/seulgi.jpg')
img2 = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
img_h, img_s, img_v = cv2.split(img2)
plt.imshow(img_v, interpolation='nearest')
plt.show()
for i in range(1, 1001):
for j in range(1, 1501):
if img_v[i][j] > 125:
y=''.join(str(v) for v in img_v[i:i][j:j])
print(type(y))
img[i][j] = cv2.cvtColor(y, cv2.COLOR_HSV2BGR)
cv2.imshow('sadd',img)
cv2.waitKey(0)
cv2.destroyAllWindows()