Я использую 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](https://i.stack.imgur.com/M7Vok.png)
Предполагается, что верхний левый угол увеличен в версии пикселей внутри синего квадрата, но цвета все не так. Как мне исправить эту проблему?