机器学习第3章第4节 : 随机像素点的绘制

机器学习第3章第4节 : 随机像素点的绘制


准备

本次教程是使用到了OpenCV的库,如果没有安装请先根据安装教程安装.


注意事项

OpenCV库中,颜色 不是 RGB ,而是 BGR ,也就是说,一个像素点由[蓝色值,绿色值,红色值]组成.

比如 : 我想读取A图像(假设A的图像矩阵变量为img_a)第150行第20列处的像素值,可使用代码 : img_a[150,20,:]

又如 : 我想读取详细的颜色值,代码如下:

blue = img_a[150,20,0]
green = img_a[150,20,1]
red = img_a[150,20,2]


思路

随机生成像素的原理是首先产生空矩阵,然后确定矩阵的5000个随机位置,最后将随机位置处的像素值设置为随机数组.

如果我想要显示图像,其原理是 : 首先使用imread(文件名)读取图像文件,生成图像矩阵,然后调用imshow()显示图像,然后调用waitKey()等待按键,最后调用destroyAllWindows()销毁所有窗口,释放内存.


算法

import numpy as np
import cv2

if __name__ == '__main__':
    #行数
    sz1 = 200
    #列数
    sz2 = 300
    print('产生的空图像矩阵为(%s,%s)' % (sz1,sz2))
    img = np.zeros((sz1,sz2,3),np.uint8)
    pos1 = np.random.randint(200,size = (5000,1)) #行位置随机数组
    pos2 = np.random.randint(300,size = (5000,1)) #列位置随机数组
    #在随机位置设置像素点值
    for i in range(5000):
        img[pos1[i],pos2[i],[0]] = np.random.randint(0,255)
        img[pos1[i],pos2[i],[1]] = np.random.randint(0,255)
        img[pos1[i],pos2[i],[2]] = np.random.randint(0,255)
    #显示图像
    cv2.imshow('preview...',img)
    #等待按键
    cv2.waitKey()
    #销毁窗口
    cv2.destroyAllWindows()

结果

randomXY


笔记

if __name__ == '__main__' 这段代码的含义是 : 如果这段代码是主程序而不是被加载(如import),那么就运行下面的代码.

img = np.zeros((sz1,sz2,3),np.uint8) 这段代码的含义是使用numpy的库,调用zeros函数产生大小为[(sz1,sz2,3),np.uint8]的矩阵,里面都是用0来填充的.

如果代码是np.zeros((3,4,5),np.uint8),那么产生的类型是<class 'numpy.ndarray'>,里面的内容如下图
numpy.ndarray

pos1 = np.random.randint(200,size = (5000,1)) #行位置随机数组 这段代码产生的类型是<class 'numpy.ndarray'>,长度为5000,结果如下(请注意!数字是随机的):
pos1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值