本文已收录于Opencv系列专栏: 深入浅出OpenCV ,专栏旨在详解Python版本的Opencv,为计算机视觉的开发与研究打下坚实基础。免费订阅,持续更新。
图像压缩比: 通过编码器压缩后的图象数字大小和原图象数字大小的压缩比。
cv2.imread()
参数说明:
第一参数为待读路径;
第二个参数为读取方式,常见读取方式有三种
#导入opencv的python版本依赖库cv2
import cv2
#使用opencv中imread函数读取图片,
#0代表灰度图形式打开,1代表彩色形式打开
img = cv2.imread('split.jpg',1)
print(img.shape)
#print(img) 打印图像的数组
cv2.imshow()
参数说明:
参数1 :窗口的名字
参数2 :图像数据名/变量名
#导入opencv依赖库
import cv2
#读取图像,读取方式为彩色读取
img = cv2.imread('split.jpg',1)
#
cv2.imshow('photo',img)
k = cv2.waitKey(0)
if k == 27: # 输入ESC键退出
cv2.destroyAllWindows()
elif k == ord('s'): # 输入S键保存图片并退出
cv2.imwrite('split_.jpg',img)
cv2.destroyAllWindows()
#加载第三方包
import cv2
from matplotlib import pyplot as plt
#使用Matplotlib导入图像
img = cv2.imread('test_image.png',0)
plt.imshow(img, cmap = 'gray', interpolation = 'bicubic')
#隐藏X、Y轴上的刻度
#plt.xticks([]), plt.yticks([])
plt.show()
#cv2.waitKey()是一个键盘绑定函数
#若为数字则是单位毫秒,若为0代表等待键盘输入。
cv2.waitKey(0)
# cv2.destroyAllWindows() 删除窗口
# 默认值为所有窗口,参数一为待删除窗口名。
cv2.destrovAllWindows()
cv2.imwrite('split_.jpg',img)
参数说明:
参数1 :图像名(包括格式)
参数2 :待写入的图像数据变量名。
#导入opencv
import cv2
#读入原始图像,使用cv2.IMREAD_UNCHANGED
img = cv2.imread("girl.jpg",cv2.IMREAD_UNCHANGED)
#查看打印图像的shape
shape = img.shape
print(shape)
#判断通道数是否为3通道或4通道
if shape[2] == 3 or shape[2] == 4 :
#将彩色图转化为单通道图
img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
cv2.imshow("gray_image",img_gray)
cv2.imshow("image", img)
cv2.waitKey(1000) # 等待1000毫秒也就是1秒
cv2.destroyAllWindows()
Opencv读取图像是以BGR读取的,但是许多包是RGB读取,因此有些情况下需要转化。
转化的方法
opencv自带的方法转
cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
numpy转
img[:,:,::-1] #列左右翻转
示例:
import cv2
import matplotlib.pyplot as plt
img = cv2.imread("test2.png", cv2.IMREAD_COLOR)
cv2.imshow("Opencv_win", img)
# 用opencv自带的方法转
img_cv_method = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# 用numpy转,img[:,:,::-1]列左右翻转
img_numpy_method = img[:,:,::-1] # 本来是BGR 现在逆序,变成RGB
# 用matplot画图
plt.subplot(1,3,1)# 划分一个1行3列的空间
plt.imshow(img_cv_method)
plt.subplot(1,3,2)
plt.imshow(img_numpy_method)
plt.subplot(1,3,3)
plt.imshow(img)
plt.savefig("./plt.png")
plt.show()
#保存图片
cv2.imwrite("opencv.png", img)
cv2.waitKey(0)
cv2.destroyAllWindows()