为什么现在video 使用教程vider没有收到照片和视频

OpenCV将图片写入到视频文件中_Linux编程_Linux公社-Linux系统门户网站
你好,游客
OpenCV将图片写入到视频文件中
来源:Linux社区&
作者:speedme
1:第一次写OpenCv的东西。
2:好久没写c++了,现在越来越觉得java代码要比c++好看多了,c++比较乱。(个人见解,两门语言都喜欢)
3:因为自己是接触项目需要opencv知识所以来学的,但在hadoop中用javacv更方便,所以先熟悉下opencv再转到javacv
不多说上代码
#include &string&&
#include "cv.h"&
#include "highgui.h"&
& & int main() {& & & & IplImage *iplImg = cvLoadImage("/home/huanglei/wr.jpg", 1);& & & IplImage *iplImgNew = cvCreateImage(cvSize(320,240),8,3) ;& //改变图片大小适应视频&
& & cvResize(iplImg,iplImgNew,CV_INTER_LINEAR) ;& & & CvVideoWriter* video = cvCreateVideoWriter("/home/huanglei/tree1.avi",& & & & & & & CV_FOURCC('P', 'I', 'M', '1'), 20,& & & & & & & cvSize(iplImgNew-&width, iplImgNew-&height), 1);& & & & /* & &
* 逐帧读取视频,并保存到另外一个视频文件中 & &
*/& & & CvCapture *& & & cap = cvCreateFileCapture("/home/huanglei/tree.avi");& & & IplImage *imgV& & && & & while (imgVideo = cvQueryFrame(cap)) {& & & & & q = cvWriteFrame(video, imgVideo);& & & }& & & & /* & &
* 在新的视频文件的末尾插入图片 & &
*/& & && & & for (int x = 0; x & 50; x++) {& & & & & i = cvWriteFrame(video, iplImgNew);& & & }& & & & /* & &
* 释放指针 & &
*/& & & if (video) {& & & & & cvReleaseVideoWriter(&video);& & & & & cvReleaseImage(&imgVideo);& & & & & cvReleaseImage(&imgVideo);& & & & & cvReleaseImage(&iplImg);& & & }& & & & return 0;& }&
相关资讯 & & &
& (06月29日)
& (04月25日)
& (05月03日)
& (04月23日)
图片资讯 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款Error message here!
Error message here!
Error message here!
Error message here!
您的账户尚未激活,请登录注册邮箱激活
重新发送激活邮件
忘记密码?请输入您的邮箱获取验证码
发送验证码
Note: 此追踪不仅限于人脸,可以追踪任何种类、形变、灯光状态、角度、大小变化下的物体。
如果您发现视频中有某类型总是跟不准please email us at ,万分感激您给予我们实验室研究的及时反馈,作为感谢我们有小礼相送 (:
Video++ Multi-object Real-time Tracking
Video++无差异多物体实时追踪
{{loadingText}}OpenCv+C++视频与图片序列之间的转换[2]
我们在计算机视觉相关的实验中都需要视频与图片序列之间相互转换,上次简单了写了这两种操作是如何实现的(),现在将其功能完善:一方面将其封装为函数,方便调用;另一方面,视频转图片可以任意设定图片输出目录,函数会自动创建相关目录;图片序列转视频可以设定更多的参数,也就可以更好的控制,而且可以自行设定视频输出的目录,函数自动检测并创建相关目录
适合windows平台+OpenCV;
需要引入包含文件:
#include &cv.h&
#include &highgui.h&
#include &iostream&
#include &direct.h&//for mk_dir
#include &io.h&//for _acess()
#include &string&
三个主要的功能函数
int recursive_mkdir( char *dir );//创建多级目录
int ImageToVideo(char* outDir,char* videoName,char* inputDir,int
startFrame,int endFrame, int imgW,int imgH,char* imgExt,double
fps,int isColor,int fourcc);//图片序列转化为视频
int& VideoToImage(char* videoName,char*
outDir,char* imgExt,int maxFrameCount);//视频转化为图片序列
//将图片序列转换为视频,返回视频帧数
int ImageToVideo(char* outDir,char* videoName,char* inputDir,int
startFrame,int endFrame, int imgW,int imgH,char* imgExt,double
fps=24,int isColor=1,int fourcc=CV_FOURCC('D','I','V','X'))
//判断输入文件夹是否存在
if (_access(inputDir,0)==-1)
std::cout&&"the input directory does
not exist!"&&std::
&&& return
&& //判断输出文件夹是否创建
若没有则创建;若为NULL则默认当前工作目录
fullVideoName[255];//输出视频的完整文件名:路径+文件名
strcpy(fullVideoName,"");
&& if (outDir==NULL)
sprintf(fullVideoName,"%s",videoName);
if (_access(outDir,0)==-1)
&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&
recursive_mkdir(outDir);
&&&&&&&&&&
sprintf(fullVideoName,"%s%s",outDir,videoName);
int frameCount=0;
CvVideoWriter *pWriter=NULL;
&&& CvSize
size=cvSize(imgW,imgH);
pWriter=cvCreateVideoWriter(videoName,fourcc,fps,size,isColor);//CREATE
&&& IplImage
*pImg=NULL;
cur_fn[255];//表示某张图片的路径
while(startFrame&=endFrame)
strcpy(cur_fn,"");
sprintf(cur_fn,"%s%d%s",inputDir,startFrame,imgExt);//need to
pImg=cvLoadImage(cur_fn,isColor);
if (!pImg)
std::cout&&"can't open an image
file"&&std::
return frameC
cvWriteFrame(pWriter,pImg);
cvWaitKey(1);
std::cout&&"Write frame
"&&startFrame&&std::
startFrame++;
cvReleaseImage(&pImg);
frameCount++;
cvReleaseVideoWriter(&pWriter);
rename(videoName,fullVideoName);//移动文件到指定文件夹
return& frameC
//将视频转换为图片序列 返回由视频分解得到的图片总帧数 目前OpenCV只支持AVI格式 因此使用之前需要
//将视频转化问AVI格式
int& VideoToImage(char* videoName,char*
outDir,char* imgExt,int maxFrameCount)
&CvCapture *cap=
cvCaptureFromFile(videoName);
&if (cap==NULL)
&&return 0;
//保存图片的文件夹路径一定要有,因为OpenCV不会自动创建文件夹
&if (_access(outDir,0)==-1)
recursive_mkdir(outDir);
std::cout&&"the ouput directory does
not exist, and the have been created
autonomously!"&&std::
&char cur_fn[255];//保存当前帧所得图片的文件名
&IplImage* pImg=NULL;
&int frame=0;
&while((pImg=cvQueryFrame(cap))!=NULL&&(frame&maxFrameCount))
&{&&&&&&&&&&&&&&&
&&frame++;
&&strcpy(cur_fn,"");
&&sprintf(cur_fn,"%s%d%s",outDir,frame,imgExt);//这里的设置适合形如
123.jpg 124.jpg的图片序列
&&cvSaveImage(cur_fn,pImg,NULL);
&cvReleaseImage(&pImg);
&cvReleaseCapture(&cap);
//该函数借鉴了网上资料,自动创建多级目录
int recursive_mkdir( char *dir )
&//分解路径名E:\\AA\\BB\\CC\\
&std::string str =
&int index = 0;
&int i = 0;
&&std::string::size_type pos =
str.find(");
&&std::string str1;
&&str1 = str.substr(0,pos);
&&if( pos != -1
&& i & 0 )
(_access(str1.c_str(),0)==-1)
_mkdir(str1.c_str());
&&if( pos==-1 )
&&index = pos+1;
&return 0;
//视频转图片
videoName1="E:\\VIDEOS\\TEST\\Videos\\woman.avi";
outDir1="E:\\VIDEOS\\TEST\\Sequences\\WoemenSequence\\";
images=VideoToImage(videoName1,outDir1,".jpg",200);
&&std::cout&&"total
frames have been extracted from
video."&&std::
&&std::cin&&p;
//图片转视频
inputDir="E:\\woman_sequence\\Parameters_Good\\part_occ\\";
char* videoName="woman.avi";
char* outDir="E:\\VIDEOS\\TEST\\Videos\\";
frames=ImageToVideo(outDir,videoName,inputDir,0,128,352,288,".jpg",30,1,CV_FOURCC('P','I','M','1'));
std::cout&&"total frames
"&&frames&&"
have been write to
video."&&std::
std::cin&&p;
项目源代码:/downloads424/sourcecode/graph/opencv/SaveVideo.rar
有了这3个小函数,视频与图片之间的转换操作就相当简单了,当然可以根据项目的需要对函数进行适当修改~~~
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。三星关闭Milk Video 视频服务也难以留住用户--百度百家
三星关闭Milk Video 视频服务也难以留住用户
分享到微信朋友圈
移动视频市场竞争激烈,三星近日发布消息将于今年11月20日关闭旗下移动视频服务平台Milk Video。
文/e媒体 龚皝 .cn
移动视频市场竞争激烈,三星近日发布消息将于今年11月20日关闭旗下移动视频服务平台Milk Video。
去年十一月份,三星正式发布流媒体视频服务Milk Video,这一服务使得用户能发现和分享热播的网络视频内容,用户无需注册就能观看视频,如果要关注其他用户或者分享视频,只需要通过其他社交网站的账户登录就好了。三星推出milk video主要是通过对三星手机用户提供免费的增值服务,提高三星手机的用户忠诚度,防止手机用户的流失,在苹果进入大屏手机市场后对三星手机形成更为直接的威胁。
但是时间仅仅过去一年,milk video就被三星关闭运营,在移动端视频分享平台竞争压力过大的情况下,与主要竞争对手YouTube相比,milk video并没有明显的优势,只是在视频内容方面与一些优秀的视频内容商合作,包括BuzzFeed、Vice、Tastemade、Fandango等其他的伙伴合作,提供独家视频和原创内容。
Milk Video关闭除了与市场竞争压力过大外也与三星对milk video的运营策略有关。
Milk Video不以赢利为目的的运营初衷,只为三星手机用户提供视屏观看和分享服务,表面上增加了三星手机的附加价值。与YouTube不同,milk video并没有引入广告等商业收入,这也意味着如果要吸引更多的用户,三星必须要全部承担milk video的内容费用,但是带来的效果并不显著,三星手机今年一季度、二季度手机出货量都居全球首位,但是在五大手机厂商中,只有三星市场份额出现了下滑,导致其二季度利润同期下滑高达38%。
在今年五月份,三星旗下的媒体解决方案受到裁员打击,裁员幅度达到15%,美国的媒体方案解决中心负责三星Milk Music 服务以及Milk Video服务。在此次裁员风波中,milk video的负责人、业务副总裁 Kevin Swint也离职而去。此次三星关停Milk Video也是有所预兆的,同为三星服务的Milk Music与Milk video一样,为用户提供免费的音乐服务,也没有广告,但三星表示后期会有其它形式的进行商业化。
三星的裁员风潮波及到全球的三星公司, 9月中旬流传的消息表明三星准备在总部进行规模为1 0%的裁员,在中国区裁员9%,尽管三星否认消息,但是根据三星这次关停milk video的消息来看,在收入情况不好的条件下,三星有意削减掉一些没法带来收益的项目,milk video还是一个费力不讨好的应用。
移动互联网的大时代下,milk video虽然在用户观看的便利性上无可挑剔,但是由于其封闭式的用户体验,只有三星智能手机用户才能使用该应用,不仅用户规模受限制,而且导致使用milk video与好友分享时会存在天然的障碍。YouTube 在PC端能够获得巨大的成功依靠的是成熟的商业模式,对原创视频作者的奖励性政策是YouTube在内容方面难逢敌手的原因。在视频观众逐渐转移到移动端时,移动互联网用户打开频率最多,使用时间最长的应用是社交应用,无论是国外的facebook还是国内的微信、微博,视频分享与社交应用是相互需要的存在。
像milk video仅仅依靠与其他视频内容商合作的前提下提供原创视频内容,而不在自己平台上生产原创内容,也没有商业化运营,三星的资金支持才是milk video关闭与否的关键。或许等三星财务情况好转后,milk video会以另外一种方式重新出现。
分享到微信朋友圈
在手机阅读、分享本文
还可以输入250个字
推荐文章RECOMMEND
阅读:3676
阅读:2979
阅读:14万
阅读:11万
阅读:10万
热门文章HOT NEWS
关于特斯拉 Model 3 发布的小吐槽
果粉俱乐部
百度新闻客户端
百度新闻客户端
百度新闻客户端
扫描二维码下载
订阅 "百家" 频道
观看更多百家精彩新闻

我要回帖

更多关于 如何使用照片制作视频 的文章

 

随机推荐