你永远不懂我伤悲,像五彩斑斓里的黑。
为了实现上文效果,不知扣掉多少程序员的三千烦恼丝,刚好手边有趁手的工具,让我来用python调侃几句。
一个数据科学家必备python的numpy库,简单高效。
一个基于C语言的很火的OpenCV2库,对症下药。
一个天很冷却仅一手插裤兜的年轻人,想露一手。
直给展示
废话少说,先上代码:
import numpy as np
import cv2
cd = np.random.normal(loc=-1, scale=1, size=(300, 500, 3))
cv2.imshow('cd', cd)
cv2.waitKey(0)
实现效果:
总体思路
生成一个矩形的3通道的图片,且颜色值随机,并保持在黑色附近。
实现方法
此处采用了python和两个大佬级工具numpy和cv2,简洁的前提是熟悉与熟练。
细节——简约而不简单
三通道图片(一般是RGB,此处是BGR)
简单的三原色基础。
cv2中只需要3维数组即可展示,格式如下:
[ # 第一维每个元素组成行, 长度值为300
[ # 第二维每个元素就组成列,每一个[b,g,r]就是像素点了 长度值为500
[b,g,r], [b,g,r],[b,g,r],... # 第三维每个元素为蓝绿红色彩亮度,长度为3(可为1,灰度图)
],
[
[b,g,r], [b,g,r],[b,g,r],...
],
[
[b,g,r], [b,g,r],[b,g,r],...
],
...
]
np.ndarray多维数组
自带各种并发运算的神器,基本告别for循环了
此处使用正态随机方法返回值类型正是三维的ndarray
np.random.normal 正态分布随机值
在指定大小的多维数组中,随机生成每个元素的值
生成策略为符合均值loc和方差scale的正态分布的随机数
cv2.imshow展示逻辑
1.像素位置隐藏在数组下标中(与[[x,y],[x,y],...]这类把位置当做值的数组不同,注意辨别)
2.最后一个维度若为1为灰度图,若为3为BGR
3.最后一个维度控制对应颜色像素的亮度值,范围0-1
cv2.waitkey的“等你一万年”
效果类似于cmd中的“按任意键继续……”,然后保持窗口,等待按键后关闭
x=0,那么无限等待下去,直到有按键按下(不止一万年,如果不停电的话)
x!=0的正整数,则等待该毫秒数自动关闭(过小或者不设会造成一闪而过)
注:学艺不精,简单分享,有误请指正。