您的位置:首页 > 编程语言 > Python开发

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

2017-01-09 10:28 615 查看
数组类型可以在创建时显示指定

>>> 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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐