Numpy是Python的一个扩展包,语法和Matlab有很多相似之处。它支持高维数组和矩阵运算,也提供了许多数组和矩阵运算的函数。另外,它在数组和矩阵运算方面速度很快,效率很高。对数组的运算都可以算在每个元素上。
利用Numpy库函数进行创建二维矩阵:
#创建一个二维矩阵 m1=np.ones([3,3],np.float32) #创建矩阵时,ones()函数初始化为全1,zeros()则为全0 m1.fill(122.122) #其值全部改为122.122 print(m1) #打印输出 m2=m1.reshape([1,9]) #reshape()可改变矩阵形状 print(m2) #输出结果如下图
利用Numpy库函数进行创建单通道代码:
img=np.zeros([400,400,1],np.uint8) #像素点大小为400*400,每个像素点含有一个通道,初始化全0 img[:,:,0]=np.ones([400,400])*127 cv.imshow("new image",img)利用Numpy库函数进行创建三通道代码:
img=np.zeros([400,400,3],np.uint8) #初始化图像,400*400*3 #img[:, :, 1] = np.ones([400, 400]) * 255 #对通道2进行赋值,显示图片为绿色 #img[:, :, 2] = np.ones([400, 400]) * 255 #对通道2进行赋值,显示图片为蓝色 img[:,:,0]=np.ones([400,400])*255 #对通道2进行赋值,显示图片为红色色 cv.imshow("new image",img)遍历图像像素点,并进行修改,从而改变图像灰度值
import cv2 as cv import numpy as np def access_pixels(image): print(image.shape) height=image.shape[0] #获取长度值 width=image.shape[1] #获取宽度值 channel=image.shape[2] #获取通道数 print("height:%s ,width:%s ,channels:%s"%(height,width,channel)) for row in range(height): for col in range(width): for c in range(channel): pv=image[row,col,c] image[row,col,c]=255-pv cv.imshow("new_image",image) src=cv.imread("C:/Users/a/Desktop/csdn/1.jpg") #read a picture cv.namedWindow("input image",cv.WINDOW_AUTOSIZE) #create a GUI,named input image cv.imshow("input image",src) #put picture into GUI,parameter:(GUI NAME,PICTURE) t1=cv.getTickCount() access_pixels(src) t2=cv.getTickCount() time=(t2-t1)/cv.getTickFrequency() print("time:%s ms"%(time*1000)) #打印运行时间 cv.waitKey(0) #wait next operation cv.destroyAllWindows() #free memory