图片与视频的处理

article/2025/9/19 12:35:56

1.首先需要在mac上安装ffmpeg(参考社区的安装教程)

需要先安装drew 然后再安装ffmpeg

2.使用dlib工具进行人脸识别,获取特征点,并输出人脸坐标

import cv2
import dlib
import numpy as np
import matplotlib.pyplot as pltpath="girl.png"
img=cv2.imread(path)
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)detector=dlib.get_frontal_face_detector()
predictor=dlib.shape_predictor('/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/face_recognition_models/models/shape_predictor_68_face_landmarks.dat')# 人脸数rects
rects = detector(img, 0)
for i in range(len(rects)):landmarks = np.matrix([[p.x, p.y] for p in predictor(path, rects[i]).parts()])
for idx, point in enumerate(landmarks):# 81点的坐标pos = (point[0, 0], point[0, 1])# 利用cv2.circle给每个特征点画一个圈,共81个cv2.circle(path, pos, 2, color=(0, 255, 0))# 利用cv2.putText输出1-81font = cv2.FONT_HERSHEY_SIMPLEXcv2.putText(path, str(idx + 1), pos, font, 0.3, (0, 0, 255), 1, cv2.LINE_AA)print("index=" + str(idx+1) + " x=" + str(pos[0]) + " y=" + str(pos[1]))
plt.imshow(path)
plt.show()
if cv2.waitKey(1) & 0xFF == ord('q'):print("q pressed")
cap.release()
cv2.destroyAllWindows()

3.使用PIL进行局部高斯模糊

在高斯模糊区域输入上一个代码生成的坐标

from PIL import Image, ImageFilterclass MyGaussianBlur(ImageFilter.Filter):name = "GaussianBlur"def __init__(self, radius=2, bounds=None):self.radius = radiusself.bounds = boundsdef filter(self, image):if self.bounds:clips = image.crop(self.bounds).gaussian_blur(self.radius)image.paste(clips, self.bounds)return imageelse:return image.gaussian_blur(self.radius)bounds = (228,228,377,377)
image = Image.open('girl.png')
image = image.filter(MyGaussianBlur(radius=29, bounds=bounds))
plt.imshow(image)# 绘制图像image
plt.axis('off')
plt.show()

得到:

 3.利用安装的ffmpeg进行视频格式转换

ffmpeg -i /Users/tiankaichun/Desktop/ghz.mp4 -b:v 640k ghz.flv

4.利用pillow进行图像处理

首先安装pillow包:

pip install pillow

生成灰度图:

from PIL import Image
import os
import matplotlib.pyplot as pltim=Image.open('girl.png').convert("L")#灰度图
print(im.format,im.size,im.mode)plt.imshow(im)
plt.title("girl")
plt.axis('off')
plt.show()

复制图像的部分区域进行粘贴:

import matplotlib.pyplot as plt
from PIL import Image
image = Image.open('IMG_3634.JPG')  # 打开图像
box = (1980,300,3000,800) # 截取区域 (x0, y0, x1, y1)
image_crop = image.crop(box) # 按指定截取区域对图像进行截取复制
image_crop.save("image_crop.jpg") # 保存image_crop = Image.open("image_crop.jpg")plt.subplot(2,1,1)
plt.imshow(image)# 绘制图像image
plt.axis('off')plt.subplot(2,1,2)
plt.imshow(image_crop)
plt.axis('off')
plt.show()image_crop = image_crop.transpose(Image.ROTATE_180) # 转180度
image.paste(image_crop,box) # 将转180度后的图像粘贴到原图像image.save('image_paste.jpg')
image_paste = Image.open("image_paste.jpg")
plt.subplot(2,1,2)
plt.imshow(image_paste)# 绘制图像image
plt.axis('off')
plt.show()

得到:

 5.使用opencv处理图片

把视频打成一张一张的图片:

import os
import cv2v_path='ghz.mp4'
image_save='./pic'#需要新建一个名为‘pic’的文件夹cap=cv2.VideoCapture(v_path)
frame_count=cap.get(cv2.CAP_PROP_FRAME_COUNT)for i in range(int(frame_count)):_,img=cap.read()img=cv2.cvtColor(img,cv2.cv2.COLOR_BGR2GRAY)#灰度图cv2.imwrite('./pic/image{}.jpg'.format(i),img)


http://chatgpt.dhexx.cn/article/MvHgwdPV.shtml

相关文章

基本全局阈值处理

基本全局阈值处理 1、全局阈值处理 (1)计算步骤 通常,在图像处理中首选的方法是使用一种能基于图像数据自动地选择阈值的算法,为了自动选阈值,下列迭代过程采用的就是这样的方法: (1) 针对全局阈值选择初…

基本的全局阈值处理Otsu方法进行最佳全局阈值处理

前言 图像阈值处理在图像分割中处于核心地位!本节将重点介绍一些常见的阈值处理方法。 一、基本的全局阈值处理 选取阈值往往是通过直方图来选择的,一方面我们可以人为的设置一个阈值进行一次二值化处理达到全局阈值处理的目的,但这样的阈值…

阈值调整

1.不平衡分类问题的阈值调整 如上图所示,正负例样本不平衡,负样本多,分类器就会更容易把图片分成负样本,因此要设置阈值, 如何选择阈值: 1.ROC曲线上的最优阈值 2.PR曲线上的最优阈值

神经网络阈值是什么意思,神经网络阈值如何确定

BP神经网络中初始权值和阈值的设定 1、首先需要了解BP神经网络是一种多层前馈网络。2、以看一下在matlab中BP神经网络的训练函数,有梯度下降法traingd,弹性梯度下降法trainrp,自适应lr梯度下降法traingda等。 3、在matlab中命令行窗口中定义输入P&…

图像的阈值处理

一般情况下,一张图片分为前景和背景,我们感兴趣的一般的是前景部分,所以我们一般使用阈值将前景和背景分割开来,使我们感兴趣的图像的像素值为1,不感兴趣的我0,有时一张图我们会有几个不同的感兴趣区域&…

神经网络阈值是什么意思,神经网络的权值和阈值

神经网络权值怎么确定? 神经网络的权值是通过对网络的训练得到的。如果使用MATLAB的话不要自己设定,newff之后会自动赋值。也可以手动:{};{}。一般来说输入归一化,那么w和b取0-1的随机数就行。 神经网络的权值确定的目的是为了让…

opencv c++ 二值图像、阈值计算方法、全局阈值、自适应阈值

1、图像定义: 彩色图像 :三通道,像素值一般为0~255; 灰度图像:单通道,像素值一般为0~255; 二值图像:单通道,像素值一般为0(黑色)、255&#xff08…

图像分割 - 阈值处理 - 全局阈值处理

目录 1. 介绍 2. 代码实现 3. 代码讲解 1. 介绍 当目标和背景像素的灰度分布非常不同的时候,可以对整个图像使用全局阈值 在大多数的应用中,图像之间通常存在足够的变化,全局阈值是一种合适的办法。所以,需要一种对图像做阈值…

硬阈值 软阈值

1 定义 1.1 硬阈值 硬阈值的定义如下: 相当于 1.2 软阈值 软阈值的定义如下: 相当于 1.3 二者对比(可视化解释) 这是一张很经典地表述软阈值和硬阈值区别的图,其中软阈值是蓝色的线,他没有突变&#xff1…

神经网络阈值是什么意思,神经网络阈值怎么设置

BP神经网络中初始权值和阈值的设定 1、首先需要了解BP神经网络是一种多层前馈网络。2、以看一下在matlab中BP神经网络的训练函数,有梯度下降法traingd,弹性梯度下降法trainrp,自适应lr梯度下降法traingda等。 3、在matlab中命令行窗口中定义输入P&…

图像处理--阈值处理

图像二值化 图像二值化就是将图像上的像素点的灰度值设置为两个值,一般为0(表示黑色)和255(表示白色),可以将整个图像呈现出明显的黑白效果。 最常用的方法就是先将图像灰度处理,然后设定一个阈…

两种划分阈值的方法

风险等级划分的时候可以降低主观性的一些系统方法 方法一:分层聚类法 凝聚层次聚类/分裂层次聚类 重点:确定层次聚类的簇数,画出树状图,基本就能得到你的区间范围,但数据量大的时候还是得再用代码跑 方法二&#xf…

“阀值”与“阈值”的区别

真相请看下图红色框里内容(手动微笑) 啥??你跟我说没看懂,好吧,说的再明白点,“阀(f)值”是一个错误的用词,其正确用法是“阈(y)值”。…

【p116】

#查询score表中为196004,课程号为1201的学生成绩 #查询student表中姓周的学生情况 #查询数学成绩第2~5名的信息 #查询通信专业最高分的学生的情况 #查询1004课程的最高分,最低分,平均成绩 #查询至少有3名学生选修且以4开头的课程号和平均分数 #将计算机专…

《JDK学习》使用JDK的keytool生成p12证书

由于前段时间在研究itext技术中的签章技术中遇到了数字签名的问题,需要用到p12证书,因此就撰写一篇用我们jdk自带的keytool 工具生成p12证书的方法供各位交流。 keytool 简介 keytool 是java 用于管理密钥和证书的工具. 其功能包括: 创建并管…

日志 P11,P12

日志: 复制一个04.内容与03是一样的. 标准日志文件: 在mybatis-config.xml中写入setting设置,配置日志文件(注意setting只能放在properties与typeAliases的中间)。 setting中参数的内容可以在mybatis官方文档查找。…

xcode ios 怎么导入p12证书

注意:在哪台电脑上生成的根证书才能在哪台电脑上导出p12,在另外的电脑上是没有导出p12的选项的(或者是灰的点不了) 1.双击p12文件,将其导入到钥匙串,或者直接把p12文件拖入到钥匙串里 2.如下图,…

iOS证书(.p12)和描述文件(.mobileprovision)申请

原文链接 : iOS证书(.p12)和描述文件(.mobileprovision)申请 如果你从事过iOS开发,大概都会了解到iOS有两种证书和描述文件: 证书类型使用场景开发(Development)证书和描述文件用于开发测试,在 HBuilderX 中打包后可在真机环境调试发布(Dist…

java工具keytool生成p12数字证书文件

最近做毕设的时候需要用到数字证书,于是就用java来生成 Keytool是用于管理和证书的工具,位于%JAVA_HOME%/bin目录** 首选找到keytool.exe 然后在上面的路径显示框中输入CMD,然后回车 进入后输入以下代码 keytool -genkeypair -alias serv…

P12:Sequential的使用

1、CIFAR10 model的结构: 2、定义网络: class Tudui(nn.Module):def __init__(self):super(Tudui, self).__init__()self.conv1 Conv2d(3, 32, 5, stride1, padding2)self.maxpool1 MaxPool2d(kernel_size2)self.conv2 Conv2d(32, 32, kernel_size5,…