首先声明,我不是很擅长Python,你们有我的钦佩。
我的问题: 我需要从模板(128px x 128px)生成10k+张图像,具有各种色调和亮度。
我加载这些图像并将它们转化为数组。
我的问题: 我需要从模板(128px x 128px)生成10k+张图像,具有各种色调和亮度。
我加载这些图像并将它们转化为数组。
image = Image.open(dir + "/" + file).convert('RGBA')
arr=np.array(np.asarray(image).astype('float'))
据我所知,以这种方式处理numpy数组比循环每个像素并使用colorsys要快得多。
现在,我发现了几个将RGB转换为HSV的函数。 这帮助我生成了具有不同色调的图像,但我还需要调整亮度,使一些变成黑色,其他变成白色。
def rgb_to_hsv(rgb):
# Translated from source of colorsys.rgb_to_hsv
hsv=np.empty_like(rgb)
hsv[...,3:]=rgb[...,3:]
r,g,b=rgb[...,0],rgb[...,1],rgb[...,2]
maxc = np.max(rgb[...,:2],axis=-1)
minc = np.min(rgb[...,:2],axis=-1)
hsv[...,2] = maxc
hsv[...,1] = (maxc-minc) / maxc
rc = (maxc-r) / (maxc-minc)
gc = (maxc-g) / (maxc-minc)
bc = (maxc-b) / (maxc-minc)
hsv[...,0] = np.select([r==maxc,g==maxc],[bc-gc,2.0+rc-bc],default=4.0+gc-rc)
hsv[...,0] = (hsv[...,0]/6.0) % 1.0
idx=(minc == maxc)
hsv[...,0][idx]=0.0
hsv[...,1][idx]=0.0
return hsv
def hsv_to_rgb(hsv):
# Translated from source of colorsys.hsv_to_rgb
rgb=np.empty_like(hsv)
rgb[...,3:]=hsv[...,3:]
h,s,v=hsv[...,0],hsv[...,1],hsv[...,2]
i = (h*6.0).astype('uint8')
f = (h*6.0) - i
p = v*(1.0 - s)
q = v*(1.0 - s*f)
t = v*(1.0 - s*(1.0-f))
i = i%6
conditions=[s==0.0,i==1,i==2,i==3,i==4,i==5]
rgb[...,0]=np.select(conditions,[v,q,p,p,t,v],default=v)
rgb[...,1]=np.select(conditions,[v,v,v,q,p,p],default=t)
rgb[...,2]=np.select(conditions,[v,p,t,v,v,q],default=p)
return rgb
将这些函数修改为转换到和从HSL的功能有多容易?转换HSV到HSL的任何技巧吗?
非常感谢您能提供的任何信息,谢谢!
brgFRAME
是通过对cv2.VideoCapture(0)
实例调用.read()
方法获取的,但它返回一个**numpy.array()
**实例。你的<image>.shape
、.size
和.dtype
是什么? - user3666197ValueError
异常? - user3666197get_YUV_V_Cr_Rec601_BRG_frame
方法时出现了错误,而不是在第51行使用cv2.cvtColor。现在,我在第51行使用cv2.cvtColor时也遇到了错误,错误信息为“OpenCV错误:在cvtColor中断言失败(深度== CV_8U ||深度== CV_16U ||深度== CV_32F),文件/build/buildd/opencv-2.4.8+dfsg1/modules/imgproc/src/color.cpp,行3642”。 - NodeNodeNode