python opencv读取灰度图,python opencv彩色转灰度

  python opencv读取灰度图,python opencv彩色转灰度

  目录一,简介二,为什么需要HSV?3.HSV的三个组成部分代表什么?4.误区五。HSV和灰度图像转换6。参考链接

  Github项目地址:https://github.com/sherry-xll/hs v2 gray

  一、导言。Sina.com/(色调、饱和度、数值),也称六角锥模型(Hexcone Model),包括色调(H)、饱和度(S)和亮度(V)

  色调(h))。

  色相h反映的是光谱的色位,用六角锥模型的角度来衡量,取值范围为0~360。RGB三个通道的取值范围通常是0-255,所以OpenCV、ncnn等库倾向于使用UCHAR来表示颜色。30超出了UCHAR的显示范围,所以量化H时可取值的范围根据不同的软件是不同的。OpenCV实现了0-180、0-180和0-255三个范围。本质上,OpenCV对H进行线性变换,并将其限制在给定的范围内。cv2的H的默认范围是0-180。饱和度统计数据。

  s代表接近光谱色的颜色程度,是一个比例值,通常在0%-100%之间。OpenCV将S的范围扩大到0-255。亮度(v)为

  v代表一种颜色的亮度,通常在0%~100%范围内。OpenCV还将V的范围扩大到0-255。颜色对比表黑色灰色红色橙色黄色绿色蓝色紫色hmin 0000/15611263578100125 hmax 18018018010/1802534799124155 smin 0004343434343434343 smax 2554330252525255252552555 VMAX 04621464646 VMAX 462222照片中的美女是LenaSoderberg,《花花公子》的忠诚老实的饭盒。

  通过对RGB三个颜色通道、变换后的HSV和灰度的可视化,得到了HSV和灰度的颜色变换方法。代码已经上传到Github了。欢迎评论。

  二、为什么需要HSV?RGB是电视和数码相机中使用最广泛的图像表示,但由于颜色之间的高度相关性,HSV大多用于目标识别和颜色提取任务,而不是RGB。下图是Lenna贴图在R、G、B通道的分色。观察到三个通道中颜色的协调变化,这暴露了RGB模式识别的主要困难。

  image=CV2 . im read(lenna . png))CV2默认为BGR格式,Plt.imshow默认为RGB格式(b,g,r))CV2 . split)image)bgr=CV2 . meear 1)PLT . im show(bgr)PLT . axis)off)PLT . title)原始图像)bgr)b)PLT . im show(b)PLT . axis)off)PLT . title)b)g=CV2 . merge)zero],g,zero ) ) PLT

  3.HSV的三个组成部分代表什么?它包含HSV色调(H)、饱和度(S)和亮度(V)三个参数。基于下图中的HSV分割,HSV的三个通道的分量由灰度表示。与RGB颜色通道相比,色调和饱和度通道不受光照条件的影响,因此可以有效地识别物体边界。

  HSV=cv2.cvtcolor(image,cv2。COLOR_BGR2HSV ) h、s、v )=cv2.split (HSV))。

  值分量代表颜色的亮度,通常取值范围为0%~100%。ncnn和OpenCV都将V的范围扩展到0-255。这时候HSV的V分量图就是一个把HSV转换成灰度的粗略方法。

  4.值得注意的是,RGB和HSV是两种不同的颜色表达。尽管转换后每个颜色通道的含义和值都发生了变化,但仍会显示原始图像。也就是说RGB和HSV是不同颜色的表达,用Photoshop可以更直观的识别出来。

  在网上,用库函数把RGB转换成HSV表示,用imshow直接绘制图像,并把它们称为对应的HSV图像,这往往是错误的:

  image=cv2 . im read(lenna . png))HSV=cv2 . CVT color)图像,cv2。COLOR _ bgr 2 HSV)PLT . show)HSV)PLT . titit titit titit titit titit itor

  在Python中,matplotlib.pyplot中imshow的默认通道是R、G、B;在cv2的imshow中,默认显示的图像有B、G、r三个通道,也就是如上所述,imshow将HSV的三个通道的分量输出为RGB或BGR的三个通道,这样得到的图像理论上是没有意义的。

  动词(verb的缩写)HSV和灰度图像之间的转换HSV的V分量分离出来的图像可以作为灰度图像使用,但是图像质量较低。为了获得高质量的灰度,常用的从HSV转换到灰度的方法是RGB。将RGB转换为灰度的常用公式如下。

  灰色=R * 0.299 G * 0.587 B * 0.114

  将由RGB值计算的灰度图像与HSV的V分量图像进行比较,可以看出由RGB变换的灰度图像质量更高。

  因此,将HSV转换为灰度的代码类似于将HSV转换为RGB的代码。根据公式将HSV转换为RGB颜色表示,根据RGB转换为灰度图像的通用公式计算出相应的灰度值。有关HSV-RGB-Gray的更多信息,请参见HSL和HSV。这里没写。

  当三个通道的彩色图像转换为灰度时,原始图像中的一些信息会丢失,因此一对一的双向转换是不可能的。当灰度转换为HSV时,执行近似处理。灰度值直接赋给V,H和S的值设置为0。

  不及物动词参考链接Github源ncnnlennaoppencvslandhsvaddconvertcolorsvaihperformanceterabyte-ordergbtohsvpallalleconversion实现

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: