【发布时间】:2014-09-10 22:58:42
【问题描述】:
我正在尝试制作自己的人脸检测安卓应用,它基于混合处理和人脸检测教程。它在我的设备上运行超级慢,分辨率为 240x160 时为 2.5 FPS。
我试图找出问题并使其更快,所以我做的其中一件事是以灰度而不是 RGB 显示结果。当我把它改回来时,我忘记删除我在灰度垫(mGr)上绘制矩形的线。
但令我惊讶的是,那些仍然出现在屏幕上(那些是白色的),在 RGB Mat 的红色之后大约有一帧延迟。所以两者都有。这怎么可能?我没有在 mRGB mat 中绘制任何白色矩形:/
这里我用 Java 来称呼它:
public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
final int viewMode = mViewMode;
switch (viewMode) {
case VIEW_MODE_FEATURES:
// input frame has RGBA format
mRgba = inputFrame.rgba();
mGray = inputFrame.gray();
myDetect();//native function
//Imgproc.cvtColor(mGray, mRgba, Imgproc.COLOR_GRAY2RGBA, 4);
break;
}
return mRgba;
}
这就是它在 C++ 部分的样子
Mat& mGr = *(Mat*) addrGray;
Mat& mRgb = *(Mat*) addrRgba;
vector<Rect> highLight; // vector with rectangles to highlight detected items
detect(mGr, highLight, env, stages);
//highlight detected items on screen
for (unsigned int i = 0; i < highLight.size(); i++) {
rectangle(mRgb, highLight[i], Scalar(255, 0, 0, 255),THICKNESS);
//rectangle(mGr, highLight[i], Scalar(255, 0, 0, 255),THICKNESS);
// if I leave this here uncommented, white rectangle ghost will appear on my screen both with desired red ones...
}
任何人都可以猜到这怎么可能?提前致谢!
【问题讨论】:
-
确保再次编译您的本机代码。发生这种情况的可能性很小。
标签: android opencv android-ndk face-detection object-detection