Python+OpenCV入门教程【三】Numpy数组操作
2020-08-19 16:03
387 查看
# _*_ coding:utf-8 _*_ import cv2 as cv import numpy as np # numpy数组操作 def access_pixles(image): print(image.shape) height = image.shape[0] width = image.shape[1] channel = image.shape[2] #色彩通道 print("width : %s, height : %s, channel : %s" % (width, height, 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("modification", image) def create_image(): img = np.zeros([400, 400, 3], np.uint8)#zeros:double类零矩阵 创建400*400 3个通道的矩阵图像 参数时classname为uint8 # 第一个通道blue 所以展示的是蓝色 img[:, :, 0] = np.ones([400, 400])*255#ones([400, 400])是创建一个400*400的全1矩阵,*255即是全255矩阵 并将这个矩阵的值赋给img的第一维 # 第二个通道green 所以展示的是绿色 img[:, :, 1] = np.ones([400, 400])*255#第二维全是255 # 第三个通道red 所以展示的是红色 img[:, :, 2] = np.ones([400, 400])*255#第三维全是255 # 此处是展示了三通道合并后的图片,也就是白色,若想展示第一通道的蓝色,则应将第二三通道的代码注释 cv.imshow("new image", img)#输出一张400*400的白色图片(255 255 255):蓝(B)、绿(G)、红(R) # numpy的操作示例 def numpy_demo(): # 创建一个三行三列浮点型数组 m1 = np.ones([3,3],np.float) # 将m1中的值全部用1222.454替换 m1.fill(1222.454) print(m1) # 将m1转换为一行九列 m2 = m1.reshape([1,9]) print(m2) #像素取反 def inverse(image): dst = cv.bitwise_not(image) cv.imshow("inverse", dst) if __name__ == '__main__': ''' 调用函数access_pixles()部分代码 ''' # # 读取图片 # src = cv.imread("pic/cat.jpg") # blue green red 三个通道 # # 创建窗口 # cv.namedWindow("original", cv.WINDOW_NORMAL) # cv.namedWindow("modification", cv.WINDOW_NORMAL) # # 展示读取的初始图片 # cv.imshow("original", src) # t1 = cv.getTickCount() # 毫秒级别的计时函数,记录了系统启动以来的时间毫秒 # # 调用函数 # access_pixles(src) # t2 = cv.getTickCount() # time = (t2 - t1) * 1000 / cv.getTickFrequency() # getTickFrequency用于返回CPU的频率,就是每秒的计时周期数 # print("time: %s" % time) # 输出运行的时间 # cv.waitKey(0) # cv.destroyAllWindows() ''' 调用函数create_image()部分代码 ''' # create_image() # cv.waitKey(0) # cv.destroyAllWindows() ''' 调用函数numpy_demo()部分代码 ''' # numpy_demo() ''' 调用库函数实现取反,这里access_pixles()实现的也是取反,但是使用库函数取反快很多 ''' src = cv.imread("pic/cat.jpg") # blue green red 三个通道 t1 = cv.getTickCount() # 毫秒级别的计时函数,记录了系统启动以来的时间毫秒 inverse(src) t2 = cv.getTickCount() time = (t2 - t1) * 1000 / cv.getTickFrequency() # getTickFrequency用于返回CPU的频率,就是每秒的计时周期数 print("time: %s" % time) # 输出运行的时间 cv.waitKey(0) cv.destroyAllWindows()
相关文章推荐
- Python3与OpenCV图像处理(二)——NumPy数组操作
- opencv入门教程Python(基本操作)
- Python+OpenCV入门教程【七】利用卷积对图像进行模糊操作
- OpenCV+Python——Numpy数组操作
- python OpenCV学习笔记(四):Numpy数组操作
- opencv-python像素的学习,以及numpy数组的操作
- Python+opencv学习记录2:Numpy数组操作
- Numpy快速入门教程(一)数组操作
- numpy教程 - 基本数据类型、多维数组ndarray及其切片操作
- Python中的Numpy入门教程
- Python 入门教程:关于 numpy 窗函数 Blackman
- Python Numpy 数组的初始化和基本操作
- Python 数据处理库 pandas 入门教程基本操作
- 从头学习opencv(2)--numpy数组操作
- Python中的Numpy入门教程
- numpy入门——数组操作
- Python Numpy 数组的初始化和基本操作
- Python爬虫入门教程 49-100 Appium安装+操作51JOB_APP(模拟手机操作之一)手机APP爬虫
- Python入门学习 part 3 :OpenCV图像简单操作
- Opencv4 -Python官方教程学习笔记6---图像基本操作