五彩斑斓的黑——优雅实现

你永远不懂我伤悲,像五彩斑斓里的黑。

为了实现上文效果,不知扣掉多少程序员的三千烦恼丝,刚好手边有趁手的工具,让我来用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的正整数,则等待该毫秒数自动关闭(过小或者不设会造成一闪而过)

注:学艺不精,简单分享,有误请指正。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值