gpt4 book ai didi

java - Mat 到 Byte[] 的转换在 Java 中不起作用

转载 作者:搜寻专家 更新时间:2023-11-01 02:24:29 25 4
gpt4 key购买 nike

我试图在 java 中将 Mat 转换为字节数组。在将 Mat 转换为 Byte[] 并将 Byte[] 转换为 Mat 时,我无法保留 Mat 的原始值。 Mat .get 接受 byte[] 作为无效参数。谁能帮我做同样的事情?

用例:抓取视频的每一帧并通过 kafka 将其发送给包含 byte[] 消息的消费者,然后消费者将接收字节数组并转换为 Mat 并将其保存为图像。

我在 java 中遇到了类似的帖子,但没有找到解决方案。 here

查看我的代码:

`       System.loadLibrary("opencv_java249");
MatOfByte webcam_image = new MatOfByte();
VideoCapture capture = new VideoCapture(
"/home/jishnu/CodeT/TrainingDataSet/Video.mp4");
System.out.println("Frame Grabber started");
byte[] frameArray;
int i=0;
if (capture.isOpened()) {
while (true) {
capture.read(webcam_image);
frameArray = new byte[(int) (webcam_image.total() * webcam_image
.channels())];
if (!webcam_image.empty()) {
// System.out.print(".");
webcam_image.get(0,0,frameArray);

producer.send(new KeyedMessage<String, byte[]>("imageTopic",frameArray));

//Below statements are only for debugging
System.out.println(frameArray.length);
MatOfByte inputframe=new MatOfByte(frameArray);
boolean b= Highgui.imwrite("/home/jishnu/CodeT/Today7.jpeg", inputframe);

if(b){System.out.println("save image success");}
else System.out.println("save image failed");

inputframe.fromArray(frameArray);
b= Highgui.imwrite("/home/jishnu/CodeT/Today6.bmp",inputframe);

if(b){System.out.println("save image success");System.exit(0);}
else System.out.println("save image failed");

} else {
System.out.println(" --(!) No captured frame -- Break!");

`

最佳答案

它对我有用。我使用 apachi-common用于写入和读取文件。

public static void save(Mat mat, String name)
{
File file = new File(path, name);
int length = (int) (mat.total() * mat.elemSize());
byte buffer[] = new byte[length];
mat.get(0, 0, buffer);
try
{
FileUtils.writeByteArrayToFile(file, buffer);
} catch (IOException e)
{
e.printStackTrace();
}
}

public static Mat load(String name)
{
File file = new File(path, name);
byte[] buffer = new byte[0];
try
{
buffer = FileUtils.readFileToByteArray(file);
} catch (IOException e)
{
e.printStackTrace();
}
Mat mat = new Mat(row, col, type);
mat.put(0, 0, buffer);
return mat;
}

关于java - Mat 到 Byte[] 的转换在 Java 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28426927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com