Python3与OpenCV3.3 图像处理(三)--Numpy数组操作

来源:互联网 发布:手机相片日期软件 编辑:程序博客网 时间:2024/06/01 16:42

一、本节简述

本节主要讲解Numpy数组操作的一些基础知识。


二、什么是Numpy

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


三、示例代码

import cv2 as cvimport  numpy as npdef access_pixel(image):    """访问图像所有的像素"""    print(image.shape)    #获取图像的高度,图像的高度为shape的第一个值(维度)    height=image.shape[0]    #获取图像的宽读,图像的宽度为shape的第二个值(维度)    width=image.shape[1]    #获取图像通道数目,图像的通道数目为shape的第三个值(维度)    #加载进来的图像都有三个通道,三个通道是图像的RGB    channels=image.shape[2]    print("width: %s,height: %s channels: %s"%(width,height,channels))    #循环获取每个像素点,并且修改,然后存储修改后的像素点    for row in range(height):        for col in range(width):            for c in range(channels):                pv=image[row,col,c]                image[row,col,c]=255-pv    #输出的是一个呈现负片效果的图片    cv.imshow("pixels_demo",image)def create_image():    """创建新图象"""    #创建一张宽高都是400像素的3通道 8位图片    img=np.zeros([400,400,3],np.uint8)    #修改通道值    img[:,:,0]=np.ones([400,400])*255    img[:, :, 2] = np.ones([400, 400]) * 255    cv.imshow("new image",img)    #创建一个单通道的8位图片    img=np.zeros([400,400,1],np.uint8)    img=img*127    cv.imshow("new image", img)    cv.imwrite("127img.png",img)    #numpy 数组维度的变换    #定义一个二维数组    img=np.ones([3,3],np.uint8)    #填充每个元素    img.fill(1000.22)    print(img)    #变换为一维数组    img=img.reshape([1,9])    print(img)#读入图片文件src=cv.imread('textImg.jpg')#获取cpu当前时钟总数t1=cv.getTickCount()access_pixel(src)t2=cv.getTickCount()#计算处理像素花费的时间#cv.getTickFrequency() 每秒的时钟总数time=((t2-t1)/cv.getTickFrequency())print("time: %s s"%time)create_image()#等待用户操作cv.waitKey(0)#释放所有窗口cv.destroyAllWindows()


阅读全文
0 0