赞
踩
1、opencv默认读入BGR通道顺序,读取的是数组类型numpy.ndarray,需要交换到rgb通道顺序才能用plt显示,不然会因为通道顺序不一致出现色偏。类型unit8,0-255。读取的图片格式是(H,W,C)。
- # opencv库
- import cv2 as cv
- src=cv.imread('car.jpg')
- print(src)
- print(src.size) # (12502500)
- print(src.shape) # (1667,2500,3)
- # ship_RGB_2 = cv.cvtColor(src, cv.COLOR_BGR2RGB)
- img = cv.resize(src,(800,600)) # cv库的resize
- cv.imshow('input_image', img)
- cv.imwrite('car_1.jpg',img)
- cv.waitKey(0)
- cv.destroyAllWindows()
2、Image默认读入的是PIL格式,默认读入通道顺序RGB,需要转换到numpy格式,转换后的数组为unit8,0-255。读取的形状为:(H,W,C)。
- # PIL库
- from PIL import Image
- import numpy as np
- img = Image.open('car.jpg')
- print(img)
- print(img.size) # (2500,1667)
- c = np.array(Image.open("car.jpg")) # 将PIL读取的图像格式转化成数组,才可对其进行操作
- print(c.shape, c.dtype) # 转为数组格式后才能使用shape参数
- img = Image.fromarray(np.uint8(img)).resize((800, 600), Image.ANTIALIAS) # 将数组转为PIL格式才能显示
- img.save('car_2.jpg')
- img.show()
3、Matplotlib 默认读入RGB通道顺序,读取的是数组类型numpy.ndarray
- #Matplotlib库
- import matplotlib.image as mpimg
- import matplotlib.pyplot as plt
- from PIL import Image
- import numpy as np
- lena = mpimg.imread('car.jpg') # 这里读入的数据是 float32 型的,范围是0-1
- # 此时 lena 就已经是一个 np.array 了,可以对它进行任意处理
- print(lena)
- print(type(lena))
- plt.imshow(lena)
- plt.axis('off') # 不显示坐标轴
- plt.savefig("car_3.jpg")
- plt.show()
图像的一些参数:
- type(img) #numpy.ndarray
- img.size #2040000
- img.dtype #dtype('uint8')
最终成功实现读取gige接口的工业相机,取流、拍照、保存界面
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。