Как преобразовать изображение RGB в Cmyk?Python

Программы на Python
Ответить
Anonymous
 Как преобразовать изображение RGB в Cmyk?

Сообщение Anonymous »

Я хочу преобразовать изображение RGB в CMYK. Это мой код; Первая проблема заключается в том, что когда я делю каждый пиксель на 255, значение приближается к нулю, поэтому полученное изображение примерно черное! Вторая проблема в том, что я не знаю, как преобразовать одноканальное результирующее изображение в 4-канальное. Конечно, я не уверен, что в следующем коде сделанный CMYK правильный. Спасибо за внимание

Изображение
Изображение

import cv2
import numpy as np
import time

img = cv2.imread('image/dr_trump.jpg')

B = img[:, :, 0]
G = img[:, :, 1]
R = img[:, :, 2]

B_ = np.copy(B)
G_ = np.copy(G)
R_ = np.copy(R)

K = np.zeros_like(B)
C = np.zeros_like(B)
M = np.zeros_like(B)
Y = np.zeros_like(B)

ts = time.time()

for i in range(B.shape[0]):
for j in range(B.shape[1]):
B_[i, j] = B[i, j]/255
G_[i, j] = G[i, j]/255
R_[i, j] = R[i, j]/255

K[i, j] = 1 - max(B_[i, j], G_[i, j], R_[i, j])
if (B_[i, j] == 0) and (G_[i, j] == 0) and (R_[i, j] == 0):
# black
C[i, j] = 0
M[i, j] = 0
Y[i, j] = 0
else:

C[i, j] = (1 - R_[i, j] - K[i, j])/float((1 - K[i, j]))
M[i, j] = (1 - G_[i, j] - K[i, j])/float((1 - K[i, j]))
Y[i, j] = (1 - B_[i, j] - K[i, j])/float((1 - K[i, j]))

CMYK = C + M + Y + K

t = (time.time() -ts)
print("Loop: {:} ms".format(t*1000))

cv2.imshow('CMYK by loop',CMYK)
cv2.waitKey(0)
cv2.destroyAllWindows()


Подробнее здесь: https://stackoverflow.com/questions/608 ... nto-a-cmyk
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»