导航:首页 > 编程语言 > javaopencv遍历

javaopencv遍历

发布时间:2025-06-28 08:14:24

1. java 如何将多张JPG图片合成视频文件,比如:avi格式 或 mpg格式.

之前有做过图片合成视频的功能,大概代码就是这样,你可以看一下
/**
* 图片合成视频
* @param mp4SavePath 视频保存路径
* @param imageDir 图片地址
* @param rate 这个可以理解成视频每秒播放图片的数量
*/
public static boolean jpgToMp4(String mp4SavePath, String imageDir, double rate) {
FFmpegFrameRecorder recorder = null;
boolean flag = true;
try {
File[] files = FileUtils.fileSort(imageDir);
int [] widthArray = new int[files.length];
int [] heightArray = new int[files.length];

/**
* 获取合成视频图片的最大宽高,避免图片比例不一致最终合成效果差
*/
for (int i = 0; i < files.length; i++) {
BufferedImage bufferedImage = ImageIO.read(files[i]);
widthArray[i] = bufferedImage.getWidth();
heightArray[i] = bufferedImage.getHeight();
}

/**
* 这个方法主要是防止图片比例达不到视频合成比例的要求,如果达不到下面条件视频则会无法播放
* 图片宽:必须要被32整除
* 图片高:必须要被2整除
*/
int [] maxWH = getImgMaxWH(widthArray,heightArray);
recorder = new FFmpegFrameRecorder(mp4SavePath,maxWH[0],maxWH[1]);
recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264);
/**
* 视频质量:目前测试出来的是25-30最清晰,视频质量范围好像是0-40,具体可以自己慢慢测
*/
recorder.setVideoQuality(25);
recorder.setFormat("mp4");
recorder.setFrameRate(rate > 0 ? rate : 1);
recorder.setPixelFormat(0);
recorder.start();

OpenCVFrameConverter.ToIplImage conveter = new OpenCVFrameConverter.ToIplImage();

/**
* 合成视频
*/
for(int i = 0; i < files.length; i++ ){
opencv_core.IplImage image = cvLoadImage(files[i].getPath());
recorder.record(conveter.convert(image));
opencv_core.cvReleaseImage(image);
}
logger.info("合成成功");
} catch(Exception e) {
e.printStackTrace();
flag = false;
logger.error("合成失败");
} finally {
try {
if (recorder != null){
recorder.stop();
recorder.release();
}
} catch (FrameRecorder.Exception e) {
e.printStackTrace();
}
}
return flag;
}

2. 除了python之外,你还应该来了解一下java的图像处理和人脸识别库:javacv

javacv技术栈究竟有何作用?

大家对于javacv充满好奇,恰巧博主对javacv有所研究,以下就来为各位介绍javacv的功能及其在各个领域的优势。

javacv不仅能处理图像,其强大的跨平台性和快速开发能力使其在Windows、Mac、Linux、树莓派嵌入式等多种平台上都能轻松应对图像处理、人脸检测识别、字符识别、音视频流媒体、树莓派(嵌入式)和深度学习等领域。

图像处理与识别

在图像处理与识别方面,javacv通过jni技术实现了opencv图像检测识别和tesseract字符识别的跨平台使用,无需再次封装。

其他方面,如矩阵计算和深度学习,了解不多,不再赘述。

音视频处理(ffmpeg)

在音视频处理方面,javacv支持ffmpeg的编解码、装封装等功能,两者并无太大差异。

嵌入式开发(树莓派等):

许多人在树莓派等基于arm芯片的板子上使用javacv,通过外接摄像头或音频设备即可实现音视频上传、图像处理、图像识别等功能。

应用场景广泛,包括各种图像采集设备、机器人视觉、人脸打卡和小区门禁等领域。

音视频流媒体:

利用javacv的流媒体优势,可实现音视频采集、推流、编解码、装封装等操作。

深度学习:

deeplearn4j为主的java深度学习框架,在深度学习领域具有一定知名度。

人脸检测识别:

关于人脸检测识别的文章在网络上颇为常见,javacv官网的首页demo也展示了人脸检测的实例,其功能与opencv相当。

文字识别:

通过Tesseract-OCR可轻松实现字符库训练、字符识别。同时,javacv的流媒体属性和嵌入式开发特性也支持摄像头的字符识别和视频图像的字符识别等场景。

javacv技术栈的应用场景

很多人好奇,javacv在哪些应用场景下得到广泛应用?

javacv具备跨平台特性,可在Windows、Linux、macOS等服务器或客户端机器上运行,并在各种嵌入式板上也能良好工作。

3. java用rtps转换成mat

实现解码或者强制转换。
首先,我们来到opencv的官网选择自己需要下载的平台及版本,因为要和公司算法做兼容,window下安装配置极其简单,将下载得到的exe文件解压缩,然后将到opencvbuild java下即可得到需要的jar包,再然后将jar包转换为maven库里的依赖就可以,引入了pom依赖之后,windows下还需要dll文件,然后重新配置文件就可以完成强制转换。

阅读全文

与javaopencv遍历相关的资料

热点内容
网络中常用的传输介质 浏览:518
文件如何使用 浏览:322
同步推密码找回 浏览:865
乐高怎么才能用电脑编程序 浏览:65
本机qq文件为什么找不到 浏览:264
安卓qq空间免升级 浏览:490
linux如何删除模块驱动程序 浏览:193
at89c51c程序 浏览:329
怎么创建word大纲文件 浏览:622
袅袅朗诵文件生成器 浏览:626
1054件文件是多少gb 浏览:371
高州禁养区内能养猪多少头的文件 浏览:927
win8ico文件 浏览:949
仁和数控怎么编程 浏览:381
项目文件夹图片 浏览:87
怎么在东芝电视安装app 浏览:954
plc显示数字怎么编程 浏览:439
如何辨别假网站 浏览:711
宽带用别人的账号密码 浏览:556
新app如何占有市场 浏览:42

友情链接