2023年 5月 26日

python 之图像处理

1.对图像的处理

首先,对图像的处理需要提前安装第三方的PIL,可利用其对图像进行缩放、裁剪、旋转、色彩转换等一些处理工作。

举例一:设置一些图像的不同模式,open().convert(). convert中,可设置出“1”、“L”、“P”等不同模式。【“L”:8 bit像素,黑白】

  1. from PIL import Image
  2. import os
  3. import matplotlib.pyplot as plt
  4. print(os.getcwd())
  5. os.chdir('C:\\Users\\读书人mn\\Desktop\\123123')
  6. print(os.getcwd())
  7. im=Image.open('four.jpg').convert('L')
  8. print(im.format,im.size,im.mode)
  9. #im.show()
  10. plt.imshow(im)
  11. plt.title('wenxuan')
  12. plt.axis('off')
  13. plt.show()

输出结果如下:

注:标题不要用“中文”

举例二:对图像进行模糊处理

从scipy导入过滤器,im2=filters.gaussian_filter(im,20)中数字20为模糊的程度。

  1. from scipy.ndimage import filters
  2. import matplotlib.pyplot as plt
  3. from pylab import *
  4. im=array(Image.open('four.jpg').convert('L'))
  5. im2=filters.gaussian_filter(im,20)
  6. plt.figure()
  7. plt.imshow(im)
  8. plt.show()
  9. plt.imshow(im2)
  10. plt.show()

输出结果如下:

 案例三:将图片信息转换成表格

  1. from PIL import Image
  2. import matplotlib.pyplot as plt
  3. img=array(Image.open('four.jpg').convert('L'))
  4. hist(img.flatten(),32)
  5. plt.figure('Image')
  6. plt.imshow(img)
  7. plt.axis('off')
  8. plt.show()

输出结果如下:

 2. 利用ffmpeg的命令对视频处理——视频裁剪

首先,利用cmd中的“cd +决定路径”方式准确将cmd定位到ffmpeg所在的位置

其次,输入ffmpeg -i 视频路径 -ss 开始时间 -t 需要截取的时间 -vcodec copy -acodec copy -preset superfast 输出视频名称.mp4

 输出文件截图:

3. 图像处理与人脸识别的结合应用

  1. import cv2
  2. import numpy as np
  3. import pandas as pd
  4. import os
  5. from matplotlib import pyplot as plt
  6. import face_recognition
  7. img2=cv2.imread("图片1.jpg")
  8. img=cv2.imread("图片2.jpg")
  9. img2_gray = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)
  10. img2_face=face_recognition.face_locations(img2,number_of_times_to_upsample = 0,model ='cnn')
  11. for (top,right,bottom,left) in img2_face:
  12. #用矩形框标记出眼睛的位置 检测多尺度图像,返回值是一张脸部区域信息的列表(x,y,宽,高)
  13. roi_gray = img2_gray[top:bottom, left:right]
  14. roi_color= img2[top:bottom, left:right]
  15. img2=img2[top:bottom, left:right]
  16. gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
  17. faces=face_recognition.face_locations(img,number_of_times_to_upsample = 0,model ='cnn')
  18. for (top,right,bottom,left) in faces:
  19. #用矩形框标记出眼睛的位置 检测多尺度图像,返回值是一张脸部区域信息的列表(x,y,宽,高)
  20. height,width =[bottom-top,right-left]
  21. img2 = cv2.resize(img2,(height , width),interpolation=cv2.INTER_AREA)
  22. roi_gray = gray[top:bottom, left:right]
  23. roi_color = img[top:bottom, left:right]
  24. img[top:bottom, left:right]=img2
  25. cv2.imshow('img',img)
  26. cv2.waitKey(0)
  27. cv2.destroyAllWindows()

输出结果如下: