在 Python 中使用 OpenCV 从随机数组中创建 RGB 图片

Posted

技术标签:

【中文标题】在 Python 中使用 OpenCV 从随机数组中创建 RGB 图片【英文标题】:Creating an RGB picture in Python with OpenCV from a randomized array 【发布时间】:2018-04-25 14:48:47 【问题描述】:

我想使用 OpenCV/Numpy 设置在 Python 中创建由随机像素值数组组成的 RGB 图像。

我能够创建灰色图像 - 看起来非常生动;使用此代码:

import numpy as np
import cv2

pic_array=np.random.randint(255, size=(900,800))
pic_array_8bit=slika_array.astype(np.uint8)
pic_g=cv2.imwrite("pic-from-random-array.png", pic_array_8bit)

但我也想把它做成彩色的。我尝试使用 cv2.cvtColor() 进行转换,但它无法正常工作。

问题可能出在数组定义或遗漏步骤中。找不到类似的情况...任何帮助如何制作彩色随机 RGB 图像,都会很棒。

谢谢!

【问题讨论】:

【参考方案1】:

RGB 图像由三个灰度图像组成。您可以制作三个灰度图像,如

rgb = np.random.randint(255, size=(900,800,3),dtype=np.uint8)
cv2.imshow('RGB',rgb)
cv2.waitKey(0)

【讨论】:

【参考方案2】:

首先,您应该使用 numpy 定义一个由 3 个通道组成的随机图像数据,如下所示-

import numpy as np
data = np.random.randint(0, 255, size=(900, 800, 3), dtype=np.uint8)

现在使用,python成像库如下图-

from PIL import Image
img = Image.fromarray(data, 'RGB')
img.show()

您还可以使用save 函数轻松保存图像

img.save('image.png')

【讨论】:

OP问OpenCV,为什么要引入PIL?

以上是关于在 Python 中使用 OpenCV 从随机数组中创建 RGB 图片的主要内容,如果未能解决你的问题,请参考以下文章

计算机视觉OpenCV 4高级编程与项目实战(Python版):使用NumPy创建随机雪花点图像

从数组中选择不相等的随机整数(python)

C++ OpenCV 中的快速索引

如何从数组中删除随机元素。 Python

从数组python中随机选择项目[重复]

Python:如何从图像中切出具有特定颜色的区域(OpenCV,Numpy)