IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 第四节课·图像处理(PIL)与音视频处理(FFmege) -> 正文阅读

[人工智能]第四节课·图像处理(PIL)与音视频处理(FFmege)

4.1 图像处理函数学习

思路:主要运用PIL对图片进行处理,可实现效果如高斯模糊、负片效果等。

【查看图像相关参数】

主要参数有:im.format,im.size,im.mode

from PIL import Image
import os

im=Image.open('pic.jpg')
print(im.format,im.size,im.mode)#图像格式、大小等
im.show()

【图像格式转换】

该功能可将jpg转换为png格式。

print(filelist):可以看到文件中有什么

from PIL import Image
import os
print(os.getcwd())
os.chdir(r'D:\a learn sth\大三上\Python程序设计\图像处理')
#写程序所有的文件名不要用中文,否则会有bug;也不要用空格

filelist=os.listdir(os.getcwd())
print(filelist)#这个列表可以看到文件中都有什么

for infile in filelist:
    filename=str(infile)
    print(filename)
    print(filename.find('.jpg'))
    isimg=filename.find('.jpg')
    if isimg>=0:
        outfile=infile[0:isimg]+".png"
        if infile!=outfile:
            try:
                Image.open(infile).save(outfile)#打开并且存成outfile
            except IOError:
                print("Cannot convert",infile)#不行的话就打印这个

【灰度图】

基本思路:1.确认当前文件路径? ?2.灰度转换? ?3.显示图片

from PIL import Image
import os
import matplotlib.pyplot as plt

#确认路径
print(os.getcwd())
os.chdir(r'D:\a learn sth\pythonclass\PIL')
print(os.getcwd())

#转换
im=Image.open('cat.jpg').convert("L")
print(im.format,im.size,im.mode)

#显示
plt.imshow(im)
plt.title("Image Processing@CAT")
plt.axis("off")
plt.show()

效果如图:

【高斯模糊】

from PIL import Image
from numpy import *
from scipy.ndimage import filters
import matplotlib.pyplot as plt

img=array(Image.open("cat.jpg").convert("L"))
img2=filters.gaussian_filter(img,50)#数字是参数,控制高斯模糊的程度

plt.figure()
plt.imshow(img)

plt.figure()
plt.imshow(img2)
plt.show()

效果如图:

【图像分割】

from PIL import Image
from numpy import *
from scipy.ndimage import measurements
import matplotlib.pyplot as plt
import os

#转换路径
print (os.getcwd())
os.chdir(r'D:\pythonclass\PIL')

#变为数组
im=array(Image.open('cat.jpg'))
plt.figure()
plt.imshow(im)

#图像分割
im=array(Image.open('cat.jpg').convert('L'))
plt.figure()
plt.imshow(im)
im=1*(im<128)
labels,nbrobjects=measurements.label(im)

print("对象个数=",nbrobjects)

#显示图片
plt.figure()
plt.imshow(im)
plt.show()

效果如图:

?

【负片效果】

from PIL import Image
import matplotlib.pyplot as plt

#确认路径
os.chdir(r'D:\pythonclass\PIL')

#转换为数组
im=array(Image.open('cat.jpg'))
plt.figure()
plt.imshow(im)

#负片效果
im2=255-im

#显示图片
plt.figure()
plt.imshow(im2)
plt.show()

效果如图:

?

4.2图像处理与人脸识别的结合

基本思路:

1.利用openCV识别出人脸

2.返回所识别人脸的坐标值

import face_recognition
import cv2
import matplotlib.pyplot as plt
 
image=face_recognition.load_image_file("yu.jpg")
face_locations=face_recognition.face_locations(image)
 
#查看检测到的人脸数量
face_num=len(face_locations)
print(face_num) 
 
#返回人脸位置
org=cv2.imread("yu.jpg")
for i in range(0,face_num):
    top=face_locations[i][0]
    right=face_locations[i][1]
    bottom=face_locations[i][2]
    left=face_locations[i][3]
    
    start=(left,top)
    end=(right,bottom)
    print(start,end)  

# 画出矩形框   
    color=(0,255,0)
    thickness=5
    img=cv2.rectangle(org,start,end,color,thickness)
    
plt.imshow(img)
plt.axis("off")
plt.show()

效果如图:

3.对人脸区域进行图像处理,如高斯模糊、旋转等。

#图片局部模糊处理
  #Image类中的成员函数filter()来调用滤波函数对图像进行滤波
from PIL import Image, ImageFilter

class MyGaussianBlur(ImageFilter.Filter):#创建一个类
  name = "GaussianBlur"#英文是高斯模糊的意思

  def __init__(self, radius=2, bounds=None):#这个类的参数定义为radius和bounds
    self.radius = radius
    self.bounds = bounds

  def filter(self, image):
    if self.bounds:
      clips = image.crop(self.bounds).gaussian_blur(self.radius)#裁剪并高斯模糊
      image.paste(clips, self.bounds)#粘贴图片
      return image
    else:
      return image.gaussian_blur(self.radius)

bounds = (664, 480,1219, 1035)
image = Image.open('yu.jpg')
image = image.filter(MyGaussianBlur(radius=29, bounds=bounds))
#image.show()这个是图片弹出来
plt.imshow(image)
plt.axis("off")
plt.show()

?效果如图:

def __init__(self)相关知识:

def __init__(self)是什么意思_通俗的告诉你Python中 init_ 到底是什么含义?_weixin_39994438的博客-CSDN博客

4.3?ffmege命令学习

利用ffmege可以对音视频进行一定的处理。

【将视频拆成(黑白)图片】

基本思路:

1.找到路径? ?

2.新建文件夹用于放图片? ?

3.打印数量? ?

4.转为灰度图+拆成图片

5.再生成新视频,则在命令行输入:

fmpeg -f image2 -i ./img/image%d.jpg -r 24 output.mp4

注意:格式说明由“%”和格式字符组成,如%d%f等。它的作用是将输出的数据转换为指定的格式输出。

?%d相关介绍: C语言-格式输入输出中“%d,%o,%x,%e,%f”等的含义_李公子的博客-CSDN博客_%d

import os
import cv2
import subprocess

os.chdir(r'D:\a learn sth\大三上\Python程序设计\视频分镜头')#转到目录下
v_path='ghz.mp4'
image_save='./img'#新建一个文件夹用于放生成的图片

cap=cv2.VideoCapture(v_path)
frame_count=cap.get(cv2.CAP_PROP_FRAME_COUNT)
print(frame_count)

for i in range(int(frame_count)):
    _,img=cap.read()
    img=cv2.cvtColor(img,cv2.cv2.COLOR_BGR2GRAY) #cv2.COLOR_RGBGRAY  cv2.COLOR_BGR2GRAY
    #大写的都是常量
    cv2.imwrite('./img/image{}.jpg'.format(i),img)#把i传进{}中

【其他命令】

直接在命令行中写:

旋转90°:ffmpeg -i test.mp4 -metadata:s:v rotate="90" -codec copy out.mp4

去掉视频中的音频:ffmpeg -i input.mp4 -an output.mp4????????????

相关网址(包含其他命令):FFmpeg常用基本命令行_文明的博客-CSDN博客_ffmpeg 命令

?

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-10-15 11:47:52  更:2021-10-15 11:48:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 10:33:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码