【问题标题】:How to make cv2 colored image (bgr) to blue range or green range image?如何将 cv2 彩色图像 (bgr) 制作为蓝色范围或绿色范围图像?
【发布时间】:2022-07-02 01:47:15
【问题描述】:
  1. 一个 numpy 数组 (x,y) = (0,10 f.eks.) 之间的未排序数据被转换为彩色 cv2 图像 bgr 并保存。

    self.arr = self.arr * 255 #bgr 格式

    cv2.imwrite("img", self.arr)

如何使这个 cv2 彩色图像变为蓝色范围颜色(浅至深蓝色),以及如何使其变为绿色范围颜色(浅至深绿色)?

我的想法是去 image2np 然后对数组做一些事情。然后返回 np2image。但我不知道如何更改值以获得预期的颜色。

【问题讨论】:

  • 第一个想法:转换为grayscale,然后使用空层RG 创建RGB,并将grayscale 作为层B - 你应该有blue range 图像。如果你输入grayscale 而不是G 那么你应该有green range 图像。

标签: python opencv visualization


【解决方案1】:

我不确定我是否理解问题,但我会将RGB 转换为grayscale,然后创建空RGB(带零)并将grayscale 作为层B 以获得"blue range" 或如G 得到"green range"

import cv2
import numpy as np

img = cv2.imread('test/lenna.png')
cv2.imshow('RGB', img)

h, w = img.shape[:2]  # height, width

gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow('Gray', gray_img)

blue_img = np.zeros((h,w,3), dtype='uint8') 
blue_img[:,:,0] = gray_img  # cv2 uses `BGR` instead of `RGB`
cv2.imshow('Blue', blue_img)

green_img = np.zeros((h,w,3), dtype='uint8') 
green_img[:,:,1] = gray_img  # cv2 uses `BGR` instead of `RGB`
cv2.imshow('Green', green_img)

red_img = np.zeros((h,w,3), dtype='uint8') 
red_img[:,:,2] = gray_img  # cv2 uses `BGR` instead of `RGB`
cv2.imshow('Red', red_img)

cv2.waitKey(0)
cv2.destroyAllWindows()

图片Lenna来自维基百科。

【讨论】:

    猜你喜欢
    • 2017-08-19
    • 2021-04-24
    • 2015-08-02
    • 1970-01-01
    • 2019-05-12
    • 1970-01-01
    • 2018-09-24
    • 1970-01-01
    • 2014-01-26
    相关资源
    最近更新 更多