【发布时间】:2014-03-15 19:10:16
【问题描述】:
我目前正在开发一个程序,该程序应该在相机框架上绘制一个小图像。使用 Android OpenCV,您确实具有以下功能来处理帧:
public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
Mat rgba = inputFrame.rgba();
mDetector.setFrame(rgba);
mDetector.processFrame();
return rgba;
}
Mat rgba 然后显示在屏幕上的位置。我的检测器现在应该处理帧 rgba(更改它)。 以下是相关代码:
public void processFrame() {
// (1) Doesn't work
Rect roi = new Rect(0, 0, 100, 100);
Mat submat = mOutputFrame.submat(roi);
Mat image = new Mat(100, 100, CvType.CV_8UC3, new Scalar(0,0,0));
image.copyTo(submat);
// (2) Does work
// --- mComparatorImage is the same size as mOutputFrame.
// --- mComparatorImage is 8bit greyscale, mOutputFrame is the rgba CameraFrame
mComparatorImage = mComparatorHolder.getCurrentImage();
mComparatorImage.copyTo(mOutputFrame);
// (3) Should work (but doesn't)
Imgproc.resize(mComparatorImage, mResizedImageClone, new Size (200, 100));
Mat bSubmat = mOutputFrame.submat(new Rect(0, 0, 200, 100));
mResizedImageClone.copyTo(bSubmat);
}
我要做的是将调整大小的 mComparatorImage 版本复制到 mOutputFrame (mOutputFrame = rgba) 引用的相机帧中。
所以我尝试做 (3)。 仅供参考:mResizedImageClone 是 Mat 类型,并被初始化为一个新的 Mat()
执行 (3) 不会更改 mOutputFrame。
(2) 然后我尝试将整个 mComparatorImage(Mat 类型和与 mOutputFrame 相同的大小)复制到 mOutputFrame。这令人惊讶。
(1) 然后我认为问题出在 submat 上,因为复制大图像可以工作,但将其小版本复制到 mOutputFrame 则不行。所以我尝试将一个黑色的小图像复制到 mOutputFrame 中。这也不起作用,尽管我在这里遵循了其他答案。
可能是什么问题?没有错误,但是(1)和(3)中的相机帧保持不变
如果您需要任何其他信息,请告诉我。
伊萨
【问题讨论】:
标签: java android opencv image-processing