Numpy数组操作OpencvMat

[转自:http://blog.csdn.net/gangzhucoll/article/details/78546290]

二、什么是Numpy

       一个用python实现的科学计算包。包括:1、一个强大的N维数组对象Array;2、比较成熟的(广播)函数库;3、用于整合C/C++和Fortran代码的工具包;4、实用的线性代数、傅里叶变换和随机数生成函数。numpy和稀疏矩阵运算包scipy配合使用更加方便。
NumPy(Numeric Python)提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库。专为进行严格的数字处理而产生。多为很多大型金融公司使用,以及核心的科学计算组织如:Lawrence Livermore,NASA用其处理一些本来使用C++,Fortran等所做的任务。


三、示例代码

[python]  view plain  copy
  1. <span style="font-size:14px;">import cv2 as cv  
  2. import  numpy as np  
  3.   
  4.   
  5. def access_pixel(image):  
  6.     """访问图像所有的像素"""  
  7.     print(image.shape)  
  8.   
  9.     #获取图像的高度,图像的高度为shape的第一个值(维度)  
  10.     height=image.shape[0]  
  11.     #获取图像的宽读,图像的宽度为shape的第二个值(维度)  
  12.     width=image.shape[1]  
  13.     #获取图像通道数目,图像的通道数目为shape的第三个值(维度)  
  14.     #加载进来的图像都有三个通道,三个通道是图像的RGB  
  15.     channels=image.shape[2]  
  16.     print("width: %s,height: %s channels: %s"%(width,height,channels))  
  17.   
  18.     #循环获取每个像素点,并且修改,然后存储修改后的像素点  
  19.     for row in range(height):  
  20.         for col in range(width):  
  21.             for c in range(channels):  
  22.                 pv=image[row,col,c]  
  23.                 image[row,col,c]=255-pv  
  24.   
  25.     #输出的是一个呈现负片效果的图片  
  26.     cv.imshow("pixels_demo",image)  
  27.   
  28.   
  29. def create_image():  
  30.     """创建新图象"""  
  31.     #创建一张宽高都是400像素的3通道 8位图片  
  32.     img=np.zeros([400,400,3],np.uint8)  
  33.     #修改通道值  
  34.     img[:,:,0]=np.ones([400,400])*255  
  35.     img[:, :, 2] = np.ones([400400]) * 255  
  36.     cv.imshow("new image",img)  
  37.   
  38.     #创建一个单通道的8位图片  
  39.     img=np.zeros([400,400,1],np.uint8)  
  40.     img=img*127  
  41.     cv.imshow("new image", img)  
  42.     cv.imwrite("127img.png",img)  
  43.   
  44.     #numpy 数组维度的变换  
  45.     #定义一个二维数组  
  46.     img=np.ones([3,3],np.uint8)  
  47.     #填充每个元素  
  48.     img.fill(1000.22)  
  49.     print(img)  
  50.     #变换为一维数组  
  51.     img=img.reshape([1,9])  
  52.     print(img)  
  53.   
  54. #读入图片文件  
  55. src=cv.imread('textImg.jpg')  
  56.   
  57. #获取cpu当前时钟总数  
  58. t1=cv.getTickCount()  
  59. access_pixel(src)  
  60. t2=cv.getTickCount()  
  61. #计算处理像素花费的时间  
  62. #cv.getTickFrequency() 每秒的时钟总数  
  63. time=((t2-t1)/cv.getTickFrequency())  
  64. print("time: %s s"%time)  
  65. create_image()  
  66. #等待用户操作  
  67. cv.waitKey(0)  
  68. #释放所有窗口  
  69. cv.destroyAllWindows()</span>  

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值