NumPy提供了一些使用占位符创建数组的函数#split_img.py

本文介绍了如何使用NumPy库创建不同类型的数组,包括全零、全一和随机数组,并展示了如何通过arange和linspace函数生成数列。此外,还提供了一个使用NumPy处理图像的例子。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数组类型可以在创建时显示指定

>>> c = array( [ [1,2], [3,4] ], dtype=complex )
>>> c
array([[ 1.+0.j,  2.+0.j],
       [ 3.+0.j,  4.+0.j]])

通常,数组的元素开始都是未知的,但是它的大小已知。因此,NumPy提供了一些使用占位符创建数组的函数。这最小化了扩展数组的需要和高昂的运算代价。

函数 function 创建一个全是0的数组,函数 ones 创建一个全1的数组,函数 empty 创建一个内容随机并且依赖与内存状态的数组。默认创建的数组类型(dtype)都是float64。

>>> zeros( (3,4) )
array([[0.,  0.,  0.,  0.],
       [0.,  0.,  0.,  0.],
       [0.,  0.,  0.,  0.]])
>>> ones( (2,3,4), dtype=int16 )                # dtype can also be specified
array([[[ 1, 1, 1, 1],
        [ 1, 1, 1, 1],
        [ 1, 1, 1, 1]],
       [[ 1, 1, 1, 1],
        [ 1, 1, 1, 1],
        [ 1, 1, 1, 1]]], dtype=int16)
>>> empty( (2,3) )
array([[  3.73603959e-262,   6.02658058e-154,   6.55490914e-260],
       [  5.30498948e-313,   3.14673309e-307,   1.00000000e+000]])

为了创建一个数列,NumPy提供一个类似arange的函数返回数组而不是列表:

>>> arange( 10, 30, 5 )
array([10, 15, 20, 25])
>>> arange( 0, 2, 0.3 )                 # it accepts float arguments
array([ 0. ,  0.3,  0.6,  0.9,  1.2,  1.5,  1.8])

arange 使用浮点数参数时,由于有限的浮点数精度,通常无法预测获得的元素个数。因此,最好使用函数 linspace 去接收我们想要的元素个数来代替用range来指定步长。

其它函数array, zeros, zeros_like, ones, ones_like, empty, empty_like, arange, linspace, rand, randn, fromfunction, fromfile参考: NumPy示例

#####split_img.py

import cv2
import numpy as np
img=cv2.imread('messi5.jpg')
b,g,r=cv2.split(img)


cv2.namedWindow('imageb')
cv2.imshow('imageb',b)
cv2.namedWindow('imageg')
cv2.imshow('imageg',g)
cv2.namedWindow('imager')
cv2.imshow('imager',r)
cv2.waitKey(0)

b=img[:,:,0]
g=img[:,:,1]
r=img[:,:,2]
cv2.namedWindow('imageb')
cv2.imshow('imageb',b)
cv2.namedWindow('imageg')
cv2.imshow('imageg',g)
cv2.namedWindow('imager')
cv2.imshow('imager',r)
cv2.waitKey(0)

cv2.namedWindow('image')
cv2.imshow('image',img)
print "======================="
cv2.waitKey(0)

img2=np.zeros(img.shape, dtype=np.uint8)
img2[:,:,0]=b
img2[:,:,1]=g
img2[:,:,2]=r
cv2.namedWindow('image2')
cv2.imshow('image2',img2)
cv2.waitKey(0)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值