opencv之从视频帧中截取图片

最近在训练一个人脸识别的模型,而项目训练需要大量真实人脸图片样本。

刚好项目用到opencv识别人脸,可以把每一帧图片保存下来,用此方法可以方便的获取大量的脸部样本,大约20分钟可以获取到10000张.

#-*- encoding:utf8 -*-
import cv2
import os
import sys
import random
# 获取分类器
classifier = cv2.CascadeClassifier(‘haarcascade_frontalface_default.xml‘)
face_dir = ‘./my_faces‘
if not os.path.exists(face_dir):
    os.makedirs(face_dir)
name=raw_input("please input your name:")
os.makedirs(face_dir+‘/‘+name)

# 打开摄像头 参数为输入流,可以为摄像头或视频文件
camera = cv2.VideoCapture(0)

# 改变亮度与对比度
def relight(img, alpha=1, bias=0):
    w = img.shape[1]
    h = img.shape[0]
    #image = []
    for i in range(0,w):
        for j in range(0,h):
            for c in range(3):
                tmp = int(img[j,i,c]*alpha + bias)
                if tmp > 255:
                    tmp = 255
                elif tmp < 0:
                    tmp = 0
                img[j,i,c] = tmp
    return img
i = 1
while 1:
    if (i <= 10000):
        print(‘It`s processing %s image.‘ % i)
        success, img = camera.read()        # 读帧
        gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)#转灰度图
        faces = classifier.detectMultiScale(gray_img, 1.3, 5)#用分类器获取脸部
        for f_x, f_y, f_w, f_h in faces:#截取原来图像的脸部
            face = img[f_y:f_y+f_h, f_x:f_x+f_w]
            face = cv2.resize(face, (128,128))
            face = relight(face, random.uniform(0.5, 1.5), random.randint(-50, 50))#重新调亮度
            cv2.imwrite(face_dir+‘/‘+name+‘/‘+str(i)+‘.jpg‘, face)
            i+=1
        key = cv2.waitKey(10)
        c = chr(key & 255)
        if c in [‘q‘, ‘Q‘, chr(27)]:
            break
    else:
        break
时间: 2024-10-24 18:39:36

opencv之从视频帧中截取图片的相关文章

视频通讯中文字图片设置的解决方案

在前面发布的"AnyChat发布单向视频解决方案"中,一些应用场景需要在Web的视频上迭加文字.图片等内容来提高用户体验,AnyChat研发团队针对这种需求开放了新的API接口来实现,在AnyChatr4479版本中提供了相关的API接口. 新增API接口功能特点包括: 1.可以在视频上动态迭加文字信息,文字颜色.字体.大小.迭加位置可设置: 2.可以同时迭加不超过5条的文字信息到视频上: 3.可以动态更新文字信息迭加位置,实现文字信息的运动效果: 4.可以在视频上动态迭加图片信息,图

opencv如何在jupyter notebook中显示图片

方法一: from matplotlib import pyplot as plt import numpy as np import cv2 img = cv2.imread('img.jpg') img2 = img[:,:,::-1] # 必须为 ::-1 plt.imshow(img) 原文地址:https://www.cnblogs.com/ctsch/p/9157776.html

(转载)[FFmpeg]使用ffmpeg从各种视频文件中直接截取视频图片

你曾想过从一个视频文件中提取图片吗?在Linux下就可以,在这个教程中我将使用ffmpeg来从视频中获取图片. 什么是ffmpeg?What is ffmpeg? ffmpeg是一个非常有用的命令行程序,它可以用来转码媒体文件.它是领先的多媒体框架FFmpeg的一部分,其有很多功能,比如解码.编码.转码.混流.分离.转化为流.过滤以及播放几乎所有的由人和机器创建的媒体文件. 在这个框架中包含有各种工具,每一个用于完成特定的功能.例如,ffserver能够将多媒体文件转化为用于实时广播的流,ffp

调用opencv相关函数,从视频流中提取出图片序列

/************************ @HJ 2017/3/30 参考http://blog.sina.com.cn/s/blog_4b0020f301010qcz.html修改的代码 @主要调用opencv相关函数,从视频流中提取出图片序列 @需要注意的问题: cvReleaseImage(&pImg)释放内存出错的两种情况:具体可以参考http://www.cnblogs.com/grandyang/p/4615036.html 1)从摄像头获取的图片不能被修改和释放,所以如果

[zt]OpenCV如何获取视频当前的一帧图像

(OpenCV读取视频.OpenCV提取视频每一帧.每一帧图片合成新的AVI视频)CvCapture 是视频获取结构 被用来作为视频获取函数的一个参数 比如 CvCapture* cap; IplImage* cvQueryFrame( cap ); 从摄像头或者文件中抓取并返回一帧———————————————————————— Opencv读取视频代码 #include "stdafx.h" #include"highgui.h" int main(int ar

Word中截取部分内容并保存为jpg图片的方法

private void button1_Click(object sender, EventArgs e) { var appWord = new Microsoft.Office.Interop.Word.Application(); var doc = new Microsoft.Office.Interop.Word.Document(); object oMissing = System.Reflection.Missing.Value;//这个是什么东西,我始终没搞明白-_- //打

在opencv下读取视频保存为图片

VideoCapture capture; capture.open("D:\\car.avi");//读取视频 对于视频下一帧的读取: capture>>frameImg;//读取视频流下一帧控制,字符重载 对于视频的图片保存 std::stringstream ss;//存储图片路径保存信息 ss<<"D:/output/image_"<<setfill('0')<<setw(3)<<(nCount-1

在ASP.NET中实现图片、视频文件上传方式

一.图片 1.在前端用<asp:FileUpload ID="UpImgName" runat="server"/>控件 2.在后台.cs中写上 protected void btnSubmit_Click(object sender,EventArgs e) { string strImgPath=string.Empty; string strDateTime=dateTime.Now.Tostring("yyyyMMddhhmmss&qu

Silverlight读取Zip文件中的图片与视频

首先看看Demo的截图: 下面我将一步步展示实现这个Demo的过程,这个需求就是读出Zip文件中的图片与视频. Demo整体架构: 首先我们准备几张图片和视频,然后将其压缩至resource.zip文件中,做完之后,我们建立一个resource.xml文件记录压缩包内的资源 <?xml version="1.0" encoding="utf-8" ?> <files> <file type="video" name=