python 颜色空间转换_[Python]RGB到lab颜色空间转换,Pytorchrgb

最近有需要,自己按照opencv实现的方式,自测!

颜色空间转换代码:

from __future__ import print_function

import torch

import numpy as np

from PIL import Image

import os

import cv2

from color_convertion import *

import os

def tensor_to_np(tensor):

img = tensor.mul(255).byte()

img = img.cpu().numpy().squeeze(0).transpose((1, 2, 0))

return img

def toTensor(img):

assert type(img) == np.ndarray,'the img type is {}, but ndarry expected'.format(type(img))

# img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

img = torch.from_numpy(img.transpose((2, 0, 1)))

return img.float().div(255).unsqueeze(0)

# N x H x W X C numpy to tensor

def N_imgtoTensor(img):

img = torch.from_numpy(img.transpose((0, 3, 1, 2)))

return img.float().div(255)

def N_tensor_to_np(tensor): #tensor value range is [0,1]

img = tensor.mul(255).byte() #tensor size [N,C,H,w]

img = img.cpu().numpy().transpose((0,2,3,1))

return img #np_img size [N,H,w,C]

def read_file(sn,tn):

s = cv2.imread('some_data/'+sn+'.jpg')

s = cv2.cvtColor(s,cv2.COLOR_BGR2LAB)

t = cv2.imread('some_data/'+tn+'.jpg')

t = cv2.cvtColor(t,cv2.COLOR_BGR2LAB)

return s, t

def tensor_rgbtolab(sn,tn):

s = cv2.imread('some_data/'+sn+'.jpg')

s = cv2.cvtColor(s,cv2.COLOR_BGR2LAB)

t = cv2.imread('some_data/'+tn+'.jpg')

t = cv2.cvtColor(t,cv2.COLOR_BGR2LAB)

s= toTensor(s)

t=toTensor(t)

return tensor2im(s),tensor2im(t)

def tensor_original_img(sn,tn):

s = cv2.imread('some_data/'+sn+'.jpg')

t = cv2.imread('some_data/'+tn+'.jpg')

s= toTensor(s)

t=toTensor(t)

return tensor_to_np(s),tensor_to_np(t)

#1、 single img process!!!

s1,t1=read_file('p1','p2')

s2,t2=tensor_rgbtolab('p1','p2')

s3,t3=tensor_original_img('p1','p2')

cv2.namedWindow("1",0)

cv2.namedWindow("2",0)

cv2.namedWindow("3",0)

cv2.resizeWindow("1",312,600)

cv2.resizeWindow("2",312,600)

cv2.resizeWindow("3",312,600)

cv2.imshow("1",np.vstack([s1,t1]))

cv2.imshow("2",np.vstack([s2,t2]))

cv2.imshow("3",np.vstack([s3,t3]))

#2、multi batch to process!!!

def tensor_rgbtolab(sn,tn):

s = cv2.imread('some_data/'+sn+'.jpg')

t = cv2.imread('some_data/'+tn+'.jpg')

temp=[]

for i,img in enumerate([s,t]):

img = cv2.cvtColor(img,cv2.COLOR_BGR2LAB)

s=np.expand_dims(img,axis=0)

temp.append(s)

cat_result=np.concatenate(temp,axis=0)

N_tensor=N_imgtoTensor(cat_result)

print(N_tensor.shape)

result=N_tensor_to_np(N_tensor)

return result

oo=tensor_rgbtolab('p1','p2')

for i,img in enumerate(oo):

cv2.imshow(str(i),img)

cv2.waitKey(0)

cv2.destroyAllWindows()

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值