android摄像头处理图片,在Android上使用opencv将摄像头获取并处理的图片转成视频...

这篇博客介绍了如何在Android平台上利用OpenCV库将一系列保存的图片转换为视频。主要代码是一个回调函数,通过设置解码格式为'MJPG',以10帧每秒的速度将图片序列写入视频文件。博主提醒注意SD卡读写权限和文件路径的正确设置,并列举了多种尝试的解码格式。最后,博主建议使用数字作为文件名以避免特殊字符问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

核心代码:

//该回调函数是button的回调函数,实现的功能是点击button就缓存已保存的图片为视频

private void addCallBack() {

int fps = 10;

int ifourcc = VideoWriter.fourcc('M','J','P','G');

org.opencv.core.Size cvSize = new org.opencv.core.Size(cropCopyBitmap.getWidth(),cropCopyBitmap.getHeight());

String path = Environment.getExternalStorageDirectory()+"/123/";//需要确保根目录有123这个文件

String name = System.currentTimeMillis() + ""

+ new Random().nextInt(1000000) + ".avi";

String filename = path + name;

VideoWriter writer = new VideoWriter(filename, ifourcc, fps, cvSize);

if(writer.isOpened())

Toast.makeText(getApplicationContext(),"successful!!!",Toast.LENGTH_SHORT).show();

else {

Toast.makeText(getApplicationContext(),"The opening fail!!!",Toast.LENGTH_SHORT).show();

}

for (int i = 0; i < matVideo.size(); i++) {

writer.write(matVideo.get(i));//matVideo是该类的成员变量,在此之前已经缓存了Mat视频帧信息。

//String pathName = path + i + ".jpg";

//imwrite(pathName,matVideo.get(i));

}

writer.release();

Toast.makeText(getApplicationContext(),"视频已缓存",Toast.LENGTH_SHORT).show();

matVideo.clear();

}

注意事项:

首先确保读写SD卡的权限被授予(我被它坑了一天)。

确保路径能够正确访问,最好是使用Android提供的文件API;其次文件名还是用数字吧,可以避免斜杠和字母组成转义字符啥的。

解码格式问题。我尝试了很多种,目前就('M','J','P','G')成功。

其他问题我已经在上篇博客中已提到,上篇。

尝试的解码格式种类如下(有兴趣的也可以去试试):

CV_FOURCC('P','I','M','1') = MPEG-1 codec

CV_FOURCC('M','J','P','G') = motion-jpeg codec

CV_FOURCC('M', 'P', '4', '2') = MPEG-4.2 codec

CV_FOURCC('D', 'I', 'V', '3') = MPEG-4.3 codec

CV_FOURCC('D', 'I', 'V', 'X') = MPEG-4 codec

CV_FOURCC('U', '2', '6', '3') = H263 codec

CV_FOURCC('I', '2', '6', '3') = H263I codec

CV_FOURCC('F', 'L', 'V', '1') = FLV1 codec

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值