如何在java中重新解释_cast以获得像素数组

如何在java中重新解释_cast以获得像素数组,java,c++,opencv,reinterpret-cast,Java,C++,Opencv,Reinterpret Cast,我想把下面的代码转换成java语言。但是,我找不到在java中进行重新解释的方法。请帮帮我 char *pixels= reinterpret_cast<char*>(FinalImage.data); char*pixels=reinterpret\u cast(FinalImage.data); 该程序可以显示如下。我想检测模糊图像 Mat newEx=new Mat(); final int MEDIAN_BLUR_FILTER_SIZE=15;

我想把下面的代码转换成java语言。但是,我找不到在java中进行重新解释的方法。请帮帮我

char *pixels= reinterpret_cast<char*>(FinalImage.data);
char*pixels=reinterpret\u cast(FinalImage.data);
该程序可以显示如下。我想检测模糊图像

Mat newEx=new Mat();
            final int MEDIAN_BLUR_FILTER_SIZE=15;
            Imgproc.medianBlur(mat1, newEx, MEDIAN_BLUR_FILTER_SIZE);

            Mat LaplacianImage= new Mat();
            Imgproc.Laplacian(newEx, LaplacianImage,CvType.CV_8U);

            Mat LaplacianImage8Bit=new Mat();
            LaplacianImage8Bit.convertTo(LaplacianImage8Bit,CvType.CV_8UC1);
            Mat FinalImage=new Mat();
            Imgproc.cvtColor(LaplacianImage8Bit,FinalImage,Imgproc.COLOR_BGR2BGRA);

            int rows= FinalImage.rows();
            int cols= FinalImage.cols();

            char *pixels= reinterpret_cast<char*>(FinalImage.data);
Mat newEx=new Mat();
最终整数中值\模糊\滤波器\大小=15;
Imgproc.medianBlur(mat1、newEx、中值模糊过滤器大小);
Mat LaplacianImage=新Mat();
Imgproc.Laplacian(newEx,LaplacianImage,CvType.CV_8U);
Mat LaplacianImage8Bit=新Mat();
LaplacianImage8Bit.convertTo(LaplacianImage8Bit,CvType.cv8uc1);
Mat FinalImage=新Mat();
Imgproc.CVT颜色(拉普拉斯图像8bit,最终图像,Imgproc.COLOR_BGR2BGRA);
int rows=FinalImage.rows();
int cols=FinalImage.cols();
char*pixels=reinterpret\u cast(FinalImage.data);

我知道您有一个对象,
FinalImage.data
,您希望将存储在该对象中的数据转换为字符串

这正是我们要做的。因此,如果您的
FinalImage.data
对象继承了,您可以使用如下代码:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(FinalImage.data);
String pixels = baos.toString();
oos.close();

java是一种高级语言,而不是C语言或C++语言,它没有直接的方法来处理内存区域,因为它是字符数组。 但是这里您使用的是OpenCV类,Java OpenCV库提供了一些工具,因为它知道字节数组中的字节矩阵在内部是一个字节数组。对于常见的元素大小也是如此

不幸的是,我没有足够的时间打开CV来猜测
FinalImage
的内部类型,但我认为它应该是一个MatOfByte,因为您使用CV_8U和CV_8UC1类型。如果是,您可以尝试以下方法:

MatOfByte byteMat = (MatOfByte) FinalImage;
byte[] internalBytes = byteMat.toArray();

据我所知,Java中没有对等的语言。仅允许在兼容类型之间进行强制转换。代替C++代码,要求直接翻译;请发布到目前为止您拥有的Java,并解释您的困难所在-几乎不可能将任意、惯用的代码从一种语言翻译成另一种语言…如果我理解正确,您是在尝试将图像转换为字符数组?也许试试这样的?String imageDataString=Base64.encodeBase64URLSafeString(imageByteArray)发布您的java代码并描述您正在尝试的内容。比如将byte[]转换为Base64编码字符串?您在这里使用的
Mat
类是什么?会是
org.opencv.core.Mat