OpenCV4Android示例应用程序-此代码段的作用是什么?

OpenCV4Android示例应用程序-此代码段的作用是什么?,opencv,opencv3.0,opencv4android,Opencv,Opencv3.0,Opencv4android,在色块检测示例应用程序中,从第129行到第133行发生了什么 某些上下文: 应用程序中的相机视图如下所示:(注意,在相机视图中,相机边框周围有一个黑色边框) () 从第114行到第128行,发生了以下情况 int cols=mRgba.cols()cols()给出矩阵中的列数。此处的矩阵是表示正在显示的实时帧流(而不是整个摄影机视图)中的帧的矩阵,即,它表示正在显示实时流的摄影机视图部分,不包括摄影机视图的黑色边框 int rows=mRgba.rows()rows()给出相机帧中的行数,不包

在色块检测示例应用程序中,从第129行到第133行发生了什么

某些上下文:

应用程序中的相机视图如下所示:(注意,在相机视图中,相机边框周围有一个黑色边框)

()

从第114行到第128行,发生了以下情况

  • int cols=mRgba.cols()
    cols()
    给出矩阵中的列数。此处的矩阵是表示正在显示的实时帧流(而不是整个摄影机视图)中的帧的矩阵,即,它表示正在显示实时流的摄影机视图部分,不包括摄影机视图的黑色边框

  • int rows=mRgba.rows()
    rows()
    给出相机帧中的行数,不包括相机视图的黑色边框

  • intxoffset=(mOpenCvCameraView.getWidth()-cols)/2;int yOffset=(mOpenCvCameraView.getHeight()-rows)/2
    mOpenCvCameraView.getWidth()
    给出整个相机视图中的行数,即相机帧加上围绕帧的相机视图的黑色边框
    (mOpenCvCameraView.getWidth()-cols)
    给出相机视图的左右黑边框宽度之和
    (mOpenCvCameraView.getWidth()-cols)/2
    xOffset
    给出一侧的黑色边框宽度,即相机视图的右侧或左侧的黑色边框。同样适用于
    yOffset

  • intx=(int)event.getX()-xOffset;int y=(int)event.getY()-yOffset
    getX()
    为第一个指针索引返回此事件的X坐标。因此
    getX()
    给出了触摸区域与相机视图最左侧的距离,其中包括左侧的黑色边框。因此
    event.getX()-xOffset
    int x
    是被触摸区域与相机“帧”(不包括相机视图的黑色边框)左侧的距离。同样适用于
    int y


  • 然后是我不知道的台词。

    我想你是在问这些台词:

    touchedRect.x = (x>4) ? x-4 : 0;
    touchedRect.y = (y>4) ? y-4 : 0;
    
    touchedRect.width = (x+4 < cols) ? x + 4 - touchedRect.x : cols - touchedRect.x;
    touchedRect.height = (y+4 < rows) ? y + 4 - touchedRect.y : rows - touchedRect.y;
    
    因此,对于第129行,如果
    x>4
    ,则将
    touchedRect.x
    设置为
    x-4
    ,否则
    0

    第130行,如果
    y>4
    ,则将
    touchedRect.y
    设置为
    y-4
    ,否则
    0

    第131行,
    touchedRect.width
    变为
    x+4-touchedRect.x
    如果
    x+4
    ,否则
    touchedRect.width
    变为
    cols-touchedRect.x


    第132行,
    touchedRect.height
    变为
    y+4-touchedRect.y
    如果
    y+4
    ,否则变为
    rows-touchedRect.y
    我假设您正在询问这些行:

    touchedRect.x = (x>4) ? x-4 : 0;
    touchedRect.y = (y>4) ? y-4 : 0;
    
    touchedRect.width = (x+4 < cols) ? x + 4 - touchedRect.x : cols - touchedRect.x;
    touchedRect.height = (y+4 < rows) ? y + 4 - touchedRect.y : rows - touchedRect.y;
    
    因此,对于第129行,如果
    x>4
    ,则将
    touchedRect.x
    设置为
    x-4
    ,否则
    0

    第130行,如果
    y>4
    ,则将
    touchedRect.y
    设置为
    y-4
    ,否则
    0

    第131行,
    touchedRect.width
    变为
    x+4-touchedRect.x
    如果
    x+4
    ,否则
    touchedRect.width
    变为
    cols-touchedRect.x

    第132行,
    touchedRect.height
    变为
    y+4-touchedRect.y
    如果
    y+4
    ,否则变为
    rows-touchedRect.y