Как я могу получить 0-255 значений RGB из коврика RGBA - PullRequest
0 голосов
/ 27 февраля 2020

Я использую OpenCv в android studio и хочу получить 0-255 RGB-значение пикселя из inputFrame, а затем нарисовать пиксель больше (заполняя прямоугольник тем же цветом), используя Imgpro c.

@Override
public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) {
    Mat mRgba = inputFrame.rgba(); //convert camera image to mat

    int pixelSize = 5;
    int pixelNum = 50;
    int sourceX = 300;
    int sourceY = 300;

    Mat dataMat = new Mat();
    Imgproc.cvtColor(mRgba,dataMat,Imgproc.COLOR_RGBA2RGB); //convert rgba mat to rgb

    for(int y = 0; y < pixelNum;y+=1) { //supposed to draw large pixels the same color as the source pixels
        for (int x = 0; x < pixelNum; x+=1) {
            byte vals[] = new byte[3];
            dataMat.get(sourceY+y, sourceX+x, vals); //get source rgb values
            Imgproc.rectangle(mRgba, new Point(x*pixelSize, y*pixelSize), new Point((x+1)*pixelSize, (y+1)*pixelSize), new Scalar(vals[0],vals[1],vals[2]), -1); //draw large pixels
        }
    }
    Imgproc.rectangle(mRgba, new Point(sourceX, sourceY), new Point(sourceX + pixelNum, sourceY+pixelNum), new Scalar(0,50,200), 1); //draw blue rectangle to show source pixels

    return mRgba;
}

При запуске этого изображения изображение сильно отличается от оригинала: Screenshot of mRgba

Предполагается, что верхний левый угол увеличен в версии пикселей внутри синего квадрата, но цвета все не так. Как мне исправить эту проблему?

...