android 在 OpenCV 中迭代矩阵的性能
Performance to iterate matrix in OpenCV for android
我是 OpenCv4Android 的新手,我需要遍历矩阵来计算阈值。
但是一个简单的 double 需要花费很多时间才能执行 (0.29 fps)。
像这样:
public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
mRGBA = inputFrame.rgba();
Mat mHSV = new Mat();
Imgproc.cvtColor(mRGBA, mHSV, Imgproc.COLOR_RGB2HSV, 4);
/* Split channels and apply weight in image */
ArrayList<Mat> mChannels = new ArrayList<Mat>(3);
Core.split(mHSV, mChannels);
Mat h = mChannels.get(1);
Mat s = mChannels.get(2);
int cols = h.cols();
int rows = h.rows();
Mat result = new Mat(h.size(), h.type(), new Scalar(0));
for(int l = 0; l < rows; ++l){
for(int c = 0 ; c < cols ; ++c){
result.put(l,c, 1);
}
}
return result;
}
我读到 JNI 的性能并没有那么好。那么,有没有办法达到更好的效果呢?
谢谢。
我决定使用 JNI。我决定使用 JNI。所以,作为支持,我使用了这个视频。 https://software.intel.com/en-us/articles/training-series-for-development-on-intel-based-android-devices
我是 OpenCv4Android 的新手,我需要遍历矩阵来计算阈值。
但是一个简单的 double 需要花费很多时间才能执行 (0.29 fps)。 像这样:
public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
mRGBA = inputFrame.rgba();
Mat mHSV = new Mat();
Imgproc.cvtColor(mRGBA, mHSV, Imgproc.COLOR_RGB2HSV, 4);
/* Split channels and apply weight in image */
ArrayList<Mat> mChannels = new ArrayList<Mat>(3);
Core.split(mHSV, mChannels);
Mat h = mChannels.get(1);
Mat s = mChannels.get(2);
int cols = h.cols();
int rows = h.rows();
Mat result = new Mat(h.size(), h.type(), new Scalar(0));
for(int l = 0; l < rows; ++l){
for(int c = 0 ; c < cols ; ++c){
result.put(l,c, 1);
}
}
return result;
}
我读到 JNI 的性能并没有那么好。那么,有没有办法达到更好的效果呢?
谢谢。
我决定使用 JNI。我决定使用 JNI。所以,作为支持,我使用了这个视频。 https://software.intel.com/en-us/articles/training-series-for-development-on-intel-based-android-devices