Я пытаюсь найти контуры из необработанных байтов, полученных из onPreviewFrame. Полученные эти необработанные байты не вращаются, когда мы делаем setDisplayOrientation (в соответствии с документами разработчиков Android). Слишком сложно поворачивать контуры. Как эффективно повернуть эти байты, а затем обработать его? Я использую openCV для поиска контуров.Обработка изображений в onPreviewFrame
@Override
public void onPreviewFrame(byte[] data, Camera camera) {
previewSize = cameraConfigUtil.cameraInstance.getParameters().getPreviewSize();
Mat srcMat = new Mat(previewSize.height, previewSize.width, CvType.CV_8UC3);
srcMat.put(0, 0, data);
rect = ImageCorrection.getLargestContour(data, previewSize.height, previewSize.width);
android.graphics.Rect rectangle = new android.graphics.Rect();
rectangle.left = rect.x;
rectangle.top = rect.y;
rectangle.right = rect.x + rect.width;
rectangle.bottom = rect.y + rect.height;
mOverlay.clear();
BarcodeGraphic graphic = new BarcodeGraphic(mOverlay);
mOverlay.add(graphic);
graphic.updateItem(rectangle);
Imgproc.rectangle(srcMat, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height), new Scalar(255, 0, 0, 255), 3);
Utils.matToBitmap(srcMat, bitmap);
}
Здесь прямоугольник дает четыре точки контура, я хочу, чтобы это быть повернуто в зависимости от угла, установленного в setDisplayOrientation.