Я студент бакалавриата и работаю над своей последней работой - приложением распознавания / идентификации цвета. Я работаю со студией android и использую библиотеку OpenCV. И я столкнулся с проблемой - каким-то образом квадрат не появляется. Идентификатор работает (он показывает цвет, который находится в середине экрана), но мне нужен квадрат, чтобы увидеть, какой именно цвет он принимает. Ошибок не обнаружено.
public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) {
mat1 = inputFrame.rgba();
Core.transpose(mat1, mat2);
Imgproc.resize(mat2, mat3, mat1.size(), 0, 0, 0);
Core.flip(mat3, mat1, 1);
int w = mat1.width();
int h = mat1.height();
int w_rect = w*3/4;
int h_rect = h*3/4;
Imgproc.rectangle(mat1, new Point( (w-w_rect)/2, (h-h_rect)/2 ), new Point(
(w+w_rect)/2, (h+h_rect)/2 ), new Scalar( 255, 0, 0 ), 5);
return mat1;
}
Идентификационный код
public boolean onTouchEvent(MotionEvent event) {
x = (int) event.getX();
y = (int) event.getY();
Bitmap bitmap = Bitmap.createBitmap(mat1.cols(), mat1.rows(), Bitmap.Config.ARGB_8888);
Utils.matToBitmap(mat1, bitmap);
float angle = 90;
Matrix matrix = new Matrix();
matrix.postRotate(angle);
Bitmap bitmap1 = Bitmap.createBitmap(bitmap, 0, 0, mat1.cols(), mat1.rows(), matrix, true);
int pixel = bitmap1.getPixel(360, 640);
int r = Color.red(pixel);
int g = Color.green(pixel);
int b = Color.blue(pixel);
int red = 0;
int green = 0;
int blue = 0;
int pixelCount = 0;
for (int y = 610; y < 670; y++) {
for (int x = 330; x < 390; x++) {
int c = bitmap1.getPixel(x, y);
pixelCount++;
red += Color.red(c);
green += Color.green(c);
blue += Color.blue(c);
}
}
int averageColor = Color.rgb(red / pixelCount, green
/ pixelCount, blue / pixelCount);
if (x != -1 && y != -1) {
mResult.setText("veikia" + " " + averageColor);
mColorView.setBackgroundColor(Color.rgb(red / pixelCount, green
/ pixelCount, blue / pixelCount));
}
return super.onTouchEvent(event);
}
XML code
<org.opencv.android.JavaCameraView
android:id="@+id/javaCameraView"
android:layout_width="288dp"
android:layout_height="512dp"
android:layout_marginStart="50dp"
android:layout_marginLeft="50dp"
android:layout_marginTop="20dp"
android:layout_marginEnd="50dp"
android:layout_marginRight="50dp"
android:layout_marginBottom="14dp"
app:layout_constraintBottom_toTopOf="@+id/textView6"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />