前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[python3 OpenCV3使用技巧]使用numpy矩阵实现RGB转HSI

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

作者头像
小宋是呢
发布2019-06-27 11:36:44
1.1K0
发布2019-06-27 11:36:44
举报
文章被收录于专栏:深度应用深度应用

python3OpenCV3使用矩阵实现RGB转HSI

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

  • 代码如下
代码语言:javascript
复制
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()
  • 结果如图
运行截图
运行截图
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年11月26日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • python3OpenCV3使用矩阵实现RGB转HSI
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档