Python---数字图像处理:opencv;读取视频;PIL,颜色转换;轮廓图;直方图

本文介绍了使用Python的OpenCV库进行数字图像处理,包括读取、展示和存储图像,读取视频并保存帧,颜色空间转换,以及轮廓图和直方图的生成。同时,也探讨了PIL库在图像读入、保存和显示的应用。

1.opencv-python读取、展示、存储图像

#opencv-python读取、展示、存储图像
import cv2
img=cv2.imread("Tom.jpg")   #读取,这个文件得在原文件夹中
cv2.imshow('image',img)   #展示
cv2.imwrite('Tom.bmp',img)   #保存为
 

运行结果:
在这里插入图片描述

2.读取视频文件TEXT.mp4,把视频的每一帧保存为jpg文件

#读取视频文件TEXT.avi,把视频的每一帧保存为jpg文件

import cv2,os
os.mkdir("source")  #在当前目录创建新目录source
video=cv2.VideoCapture("TEXT.mp4")
L=int(video.get(cv2.CAP_PROP_FRAME_COUNT))  #计算视频帧数
for i in range(L-1):
    ret,frame=video.read()   #获取图像尺寸
    cv2.imshow('Frame',frame)  #展示
    c=cv2.waitKey(2)  #停顿2毫秒
    cv2.imwrite("source\\"+str(i)+".jpg",frame)   #另存为
    if c == 27:   #ESC对应的ASCII,即退出
        break
video.release()
cv2.destroyAllWindows()   #关闭所有窗口

                       

                       

运行结果:
在这里插入图片描述

3.查看所有颜色空间转换方法

#查看所有颜色空间转换方法
import cv2
flags=[i for i in dir(cv2) if i.startswith('COLOR_')]
print(flags)
       

运行结果:
在这里插入图片描述

4.九种颜色转换实例

#颜色转换实例
import matplotlib.pyplot as plt,cv2
img_BGR=cv2.imread('flower.png')   #BGR
plt.subplot(3,3,1)   #窗口
plt.imshow(img_BGR)  #展示
plt.axis('off')   #关闭坐标刻度和坐标轴
plt.title('BGR')

img_RGB=cv2.cvtColor(img_BGR,cv2.COLOR_BGR2RGB)    #BRG-->RGB
plt.subplot(3,3,2)  #窗口
plt.imshow(img_RGB)
plt.axis('off')
plt.title('RGB')

img_GRAY=cv2.cvtColor(img_BGR,cv2.COLOR_BGR2GRAY)    
plt.subplot(3,3,3)  #窗口
plt.imshow(img_GRAY)
plt.axis('off')
plt.title('GRAY')

img_HSV=cv2.cvtColor(img_BGR,cv2.COLOR_BGR2HSV)   
plt.subplot(3,3,4)  #窗口
plt.imshow(img_HSV)
plt.axis('off')
plt.title('HSV')

img_YCrCb=cv2.cvtColor(img_BGR,cv2.COLOR_BGR2YCrCb)    
plt.subplot(3,3,5)  #窗口
plt.imshow(img_YCrCb)
plt.axis('off')
plt.title('YcrCb')



img_HLS = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2HLS)
plt.subplot(3,3,6)
plt.imshow(img_HLS)
plt.axis('off')
plt.title('HLS')

img_XYZ = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2XYZ)
plt.subplot(3,3,7);
plt.imshow(img_XYZ)
plt.axis('off')
plt.title('XYZ')

img_LAB = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2LAB)
plt.subplot(3,3,8)
plt.imshow(img_LAB)
plt.axis('off')
plt.title('LAB')

img_YUV = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2YUV)
plt.subplot(3,3,9)
plt.imshow(img_YUV)
plt.axis('off')
plt.title('YUV')

plt.show()#展示

运行结果:
在这里插入图片描述

5.PIL库图像的读入、保存、显示

#PIL库图像的读入、保存、显示

from PIL import Image
from numpy import array
import pylab as plt
a=Image.open("Tom.jpg")  #返回一个PIL图像对象
b=a.convert("L")  #转换为灰度图像对象
b.save("Tom2.jpg")  #把灰度图像保存为empire2.jpg
aa=array(a)  #把图像对象转换为数组

print(aa.shape)   #显示图像大小

c=a.crop((100,100,400,400))
d=a.rotate(45)   #图像旋转45°

plt.rc('font',family="SimHei")

plt.subplot(221)
plt.imshow(a)
plt.title("原图")

plt.subplot(222)
plt.imshow(b)
plt.title("灰度图")

plt.subplot(223)
plt.imshow(c)
plt.title("剪裁图像")

plt.subplot(224)
plt.imshow(d)
plt.title("旋转图像")

plt.show()
       

运行结果:
(700, 700, 3)
在这里插入图片描述

6。生成轮廓图以及直方图

from PIL import Image
from numpy import array
import pylab as plt  #挤在Matplotlib 的Pylab接口

a=Image.open("Tom.jpg")
b=a.convert('L')
aa=array(b)                 #读取图像到数组中

plt.rc('font',size=16)

plt.subplot(121)
plt.contour(aa,origin='image')  #轮廓图
plt.subplot(122)
plt.hist(aa.flatten(),128)

plt.show()



运行结果:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值