图像识别入门2 视频中选取帧节图像

视觉传感器模块:

线性CCD模块:

线性CCD模块TSL1401CL如图所示。

TSL1401CL传感器采用国外原装进口的TSL1401CL芯片以及进口的镜头。其优点是57°自然角镜头,90°和120°度广角镜头可自由切换,线性度好,容易进行二值化处理,其缺点是只能采集一行数据。

CMOS摄像头模块随动式安装

CMOS摄像头模块OV7620如下图所示。

OV7620摄像头采用全新原装进口的传感芯片以及有源晶振。其优点是拥有95°超清镜头,图像清晰无噪点,以及5V/3.3V单片机自适应功能,功耗低动态范围宽,小巧精致。其缺点是图像边缘处会产生一定畸变。

我们在目标检测中我往往是得到的视频流,所以我们首先要读取视频流,然后从中提取想要的帧节图片。

我先展示选取的视频。

然后我们和入门一,相同建立项目;

#include

#include "cv.h"

#include "opencv2/opencv.hpp"

using namespace std;

using namespace cv;

// 描述:将视频帧转成图片输出

void main()

{

// 获取视频文件

VideoCapture cap("D:\\abc\\12.avi");

// 获取视频总帧数

long totalFrameNumber = cap.get(CV_CAP_PROP_FRAME_COUNT);

cout

Mat frame;

bool flags = true;

long currentFrame = 0;

while (flags) {

// 读取视频每一帧

cap.read(frame);

stringstream str;

str

cout

printf("\n");

// 设置每30帧获取一次帧

if (currentFrame % 30 == 0) {

// 将帧转成图片输出

imwrite("D:\\abc\\" + str.str(), frame);

}

// 结束条件

if (currentFrame >= totalFrameNumber) {

flags = false;

}

currentFrame++;

}

system("pause");

}

运行结果:

可以看到我的视频提取了80帧图片,然后每30帧选取一次。得到0帧、30帧、60帧,3张图片。

这为以后的目标位置识别,起到很大的作用。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190106G005IT00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券