android:如何将int[]转换为OpenCV Mat c++
android: How to convert an int[] to an OpenCV Mat c++?
我试图使用openCV对从onPreviewFrame(byte[] rawData)返回的数组进行一些图像处理,我已将字节数组转换为int数组。
我的问题是,如何将这个int数组转换为Iplimage或Mat ?换用新的Camera2会有什么好处吗?
我已经尝试用这种方法来转换数组。
void ProcImage(int Width, int Height, int imageArray[]) {
cv::Mat mat = cv::Mat(Width, Height, CV_32SC1 , imageArray);
}
but mat.data包含像-14545898这样的值。有解决方案吗?提前感谢
这很可能是由于您使用的Mat类型CV_32SC1
。您甚至不需要转换int数组,并使用字节数组
cv::Mat mat = new cv::Mat(Width, Height, CvType.CV_8UC3, byteArray);
其中byteArray
为字节数组。
如果您仍然想使用int数组尝试更改类型为Mat: CV_32SC1,CV_32SC2,CV_32SC3,CV_32SC4
之一,如http://ninghang.blogspot.com/2012/11/list-of-mat-type-in-opencv.html
直接在Java中你可以做这样的事情(它是基于JavaCameraView的实现):
...
Mat frameData = new Mat(frameHeight + (frameHeight/2), frameWidth, CvType.CV_8UC1);
@Override
public void onPreviewFrame(byte[] frame, Camera arg1) {
Log.d(TAG, "Preview Frame received. Frame size: " + frame.length);
synchronized (this) {
frameData.put(0, 0, frame);
...
this.notify();
}
}
public Mat getRgbaFrame() {
Mat rgba = new Mat();
Imgproc.cvtColor(frameData, rgba, Imgproc.COLOR_YUV2RGBA_NV21, 4);
return mRgba;
}
public Mat getGrayFrame() {
return frameData.submat(0, frameHeight, 0, frameWidth);
}
相关文章:
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- 如何将 c++ get 函数代码转换为 opencv 算法中使用的 python
- 将 OpenCV 2 中的ANN_MLP代码转换为 OpenCV 3 代码
- OpenCV - 如何将灰度转换为彩色(CV_8UC3)?
- 将 OpenCV-Matrix 转换为矢量
- 将 opencv 从 2.4.13 转换为 3.3.1 时由 cv::resize() 引起的运行错误
- 从 16UC3 到 8UC3 的高性能 OpenCV 矩阵转换
- HALCON到OpenCV失真系数的转换
- 将节点数组(可变长度)转换为常量浮点**以调用opencv.calcHist
- 如何将垫子转换为 int?(c++,gpu,OpenCV)
- 如何将OpenCV图像数据从Python转换为C++?
- 更快地将卤化物图像转换为 opencv 垫?
- 如何在OpenCV中将4维矩阵转换为NHWC格式
- 错误 C2679:二进制'=':未找到采用类型 'IplImage *' 的右侧操作数的运算符(或没有可接受的转换) OpenCV
- 如何转换OpenCV垫卤化物图像和回来
- 转换OpenCV灰度垫Caffe blob
- 通过强制转换OpenCV UMat的句柄实例化OpenCL cl_mem
- 图像格式转换opencv
- 相机校准和坐标转换(OpenCV)
- Android OpenCV -转换OpenCV c++代码到Android,以检测QR码对齐方块