ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

数字图像与机器视觉基础补充(2)

2021-12-24 10:58:40  阅读:179  来源: 互联网

标签:机器 img 数字图像 cv2 lwpImg rgb HSV 视觉 cv


数字图像与机器视觉基础补充2

彩色图像文件转换为灰度文件

使用opencv

import cv2 as cv

img = cv.imread('189.png', 1)
img_1 = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
cv.imshow('gray', img_1)
cv.imshow('colour', img)
cv.waitKey(0)

在这里插入图片描述

不使用opencv

from PIL import Image

I = Image.open('189.png')
L = I.convert('L')
L.show()

在这里插入图片描述

彩色图像(RGB)转为HSV、HSI 格式

HSV

import cv2 as cv

img = cv.imread('189.png', 1)
cv.imshow('original image', img)
hsv = cv.cvtColor(img, cv.COLOR_BGR2HSV)
cv.imshow('HSV format image', hsv)
cv.waitKey(0)

在这里插入图片描述

HSI

import cv2
import numpy as np


def rgbtohsi(rgb_lwpImg):
    rows = int(rgb_lwpImg.shape[0])
    cols = int(rgb_lwpImg.shape[1])
    b, g, r = cv2.split(rgb_lwpImg)
    # 归一化到[0,1]
    b = b / 255.0
    g = g / 255.0
    r = r / 255.0
    hsi_lwpImg = rgb_lwpImg.copy()
    H, S, I = cv2.split(hsi_lwpImg)
    for i in range(rows):
        for j in range(cols):
            num = 0.5 * ((r[i, j] - g[i, j]) + (r[i, j] - b[i, j]))
            den = np.sqrt((r[i, j] - g[i, j]) ** 2 + (r[i, j] - b[i, j]) * (g[i, j] - b[i, j]))
            theta = float(np.arccos(num / den))

            if den == 0:
                H = 0
            elif b[i, j] <= g[i, j]:
                H = theta
            else:
                H = 2 * 3.14169265 - theta

            min_RGB = min(min(b[i, j], g[i, j]), r[i, j])
            sum = b[i, j] + g[i, j] + r[i, j]
            if sum == 0:
                S = 0
            else:
                S = 1 - 3 * min_RGB / sum

            H = H / (2 * 3.14159265)
            I = sum / 3.0
            # 输出HSI图像,扩充到255以方便显示,一般H分量在[0,2pi]之间,S和I在[0,1]之间
            hsi_lwpImg[i, j, 0] = H * 255
            hsi_lwpImg[i, j, 1] = S * 255
            hsi_lwpImg[i, j, 2] = I * 255
    return hsi_lwpImg


if __name__ == '__main__':
    rgb_lwpImg = cv2.imread("1.jpg")
    hsi_lwpImg = rgbtohsi(rgb_lwpImg)
    cv2.imshow('1.jpg', rgb_lwpImg)
    cv2.imshow('hsi_lwpImg', hsi_lwpImg)
    key = cv2.waitKey(0) & 0xFF
    if key == ord('q'):
        cv2.destroyAllWindows()

在这里插入图片描述

参考

将彩色图像转换为灰度文件、HSV、HSI 格式

标签:机器,img,数字图像,cv2,lwpImg,rgb,HSV,视觉,cv
来源: https://blog.csdn.net/m0_51120713/article/details/122122766

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有