专栏首页深度应用[python3 OpenCV3使用技巧]使用numpy矩阵实现RGB转HSI

[python3 OpenCV3使用技巧]使用numpy矩阵实现RGB转HSI

python3OpenCV3使用矩阵实现RGB转HSI

看到网上有很多博客都是通过循环遍历的方式来进行RGB转HSI操作,但是我们知道在python中使用Numpy数组并行操作可以更加简洁,速度也更快。

  • 代码如下
import cv2
import numpy as np
import sys


In_path = "BGR.jpg"

img = cv2.imread(In_path)
img = cv2.resize(img,(400,300))
line, cols, chl = img.shape
img = img.astype(np.float32)
img_bgr = img.copy()/255

b,g,r = cv2.split(img_bgr)
Tdata = np.where((2*np.sqrt((r-g)**2+(r-b)*(g-b))) != 0,np.arccos((2*r-b-g)/(2*np.sqrt((r-g)**2+(r-b)*(g-b)))),0)
Hdata = np.where(g >= b,Tdata,2*3.1415926-Tdata) 
Hdata = Hdata / (2*3.1415926)
Sdata = np.where((b+g+r) != 0, 1 - 3*np.minimum(b,g,r)/(b+g+r),0)
Idata = (b+g+r)/3
img_hsi = np.zeros((300,400,3))
img_hsi[:,:,0] = Hdata*255
img_hsi[:,:,1] = Sdata*255
img_hsi[:,:,2] = Idata*255
img_hsi = np.array(img_hsi)
print(img_hsi.shape)
print(img.shape)

while(True):
    cv2.imshow('rgb_lwpImg', img.astype(np.uint8))
    cv2.imshow('hsi_lwpImg', img_hsi.astype(np.uint8))
    cv2.imwrite("BGR_deal2.jpg",img_hsi.astype(np.uint8))
    if(cv2.waitKey(1000//12) &  0xff == ord("q")):
        break
cv2.destroyAllWindows()
  • 结果如图

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • [Keras填坑之旅]·图片分类中是否使用img_to_array的影响

    在使用keras进行图片分类的任务,笔者最开始的方法是使用opencv库cv2.imread读取照片,再使用cv2.resize重设尺寸。在和别人的代码进行训练...

    小宋是呢
  • [Keras深度学习浅尝]实战五·使用DNN自编码器实现聚类操作数据降维

    小宋是呢
  • [开发技巧]·AdaptivePooling与Max/AvgPooling相互转换

    自适应池化Adaptive Pooling是PyTorch的一种池化层,根据1D,2D,3D以及Max与Avg可分为六种形式。

    小宋是呢
  • Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)

    之前不知道Keras这么方便,在构建神经网络的过程中绕了很多弯路,最开始学的TensorFlow,后来才知道Keras。

    砸漏
  • Python实现RGB与HSI颜色空间的互换

    这是这学期数字图像处理课的第一份作业好久没懂python手都快生了,调了好久才搞出来。 HSI颜色模型是一个满足计算机数字化颜色管理需要的高度抽象模拟的数学...

    AI那点小事
  • IDEA设置优化,自定义风格!

    下次如果重装idea,可以把这个配置文件复制粘贴过去,那么之前的所有配置都会保存好了,不需要重新配置;

    程序员的时光001
  • 总说手机没有“好壁纸”,Python一次性抓取500张“美女”图片,够不够用!

    编辑 | JackTian 来源 | 杰哥的IT之旅(ID:Jake_Internet) 转载请联系授权(微信ID:Hc220066)

    杰哥的IT之旅
  • 【深度学习系列】用PaddlePaddle进行车牌识别(一)

    小伙伴们,终于到了实战部分了!今天给大家带来的项目是用PaddlePaddle进行车牌识别。车牌识别其实属于比较常见的图像识别的项目了,目前也属于比较成熟的应...

    Charlotte77
  • Caffe2 - (十八) 图片数据处理函数

    Caffe2 提供了对图片进行加载、裁剪、缩放、去均值、batch 等处理的函数 - helper.py.

    AIHGF
  • 字符串提取

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    喜欢ctrl的cxk

扫码关注云+社区

领取腾讯云代金券