gpt4 book ai didi

android - OpenCV/Android : Rectangles from Mat I did not use appears on screen

转载 作者:行者123 更新时间:2023-12-02 16:40:24 25 4
gpt4 key购买 nike

我正在尝试制作自己的人脸检测安卓应用程序,它基于混合处理和人脸检测教程。它在我的设备上以 240x160 分辨率运行超慢 cca 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...
}

任何人都可以猜到这怎么可能?提前致谢!

最佳答案

为什么会惊讶?。如果您仔细查看代码,输入帧是相同的,但您只提供不同的 channel ,即 inputframe.rgba 返回 4 个 channel ,而 inputframe.gray 返回同一输入帧的单个 channel 。它绘制那个白色矩形,因为在灰色 channel 中它只能绘制从亮到暗的不同色调的灰色。

But for my surprise, those were still appearing on the screen (those were white), with approx one frame delay after red ones from the RGB Mat



这是因为在 RGBA 框架中绘制矩形后,您在灰度垫中绘制矩形。在你看来,它好像是在一帧之后绘制的。

rectangle(mRgb, highLight[i], Scalar(255, 0, 0, 255),THICKNESS);
rectangle(mGr, highLight[i], Scalar(255, 0, 0, 255),THICKNESS);



您是否想知道如何在灰框中检测这些矩形
detect(mGr, highLight, env, stages);

并在 rgba 框架上绘制检测结果?

rectangle(mRgb, highLight[i], Scalar(255, 0, 0, 255),THICKNESS);



原因和上面解释的一样。

关于android - OpenCV/Android : Rectangles from Mat I did not use appears on screen,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24848140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com