React Native Vision Camera: проблемы ориентации кадров, проблемы с производительностью Android и проблемы с обнаружениемAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 React Native Vision Camera: проблемы ориентации кадров, проблемы с производительностью Android и проблемы с обнаружением

Сообщение Anonymous »

Краткое изложение задачи
Я строю приложение для анализа лица с использованием реактора-камеры-камеры и камеры реакции-камеры-камеры. I'm facing three critical issues:
Frame orientation mismatch: Camera frames are always landscape but device is portrait
Android performance: Lighting analysis crashes/freezes the app immediately
Uneven lighting detection: Need to detect balanced lighting across the entire face
Environment
React Native: 0.76.6
react-native-vision-camera: ^4.6.4
react-native-vision-camera-face-detector: ^1.8.2
Testing on: iOS 15.5+ and Android 12+
< /code>
Выпуск 1: Проблема ориентации кадра
Размеры камеры камеры всегда являются ландшафтами (например, 1920x1080), даже если устройство хранится в портретном режиме. Это вызывает неправильное картирование координат при расположении границ поверхности на экране. < /P>
Frame comes as landscape: frameWidth=1920, frameHeight=1080
// But screen is portrait: screenWidth=390, screenHeight=844

const frameProcessor = useFrameProcessor((frame) => {
'worklet';
const faces = detectFaces(frame);

// These coordinates are wrong because of orientation mismatch
const scaleX = screenWidth / frame.width; // 390/1920
const scaleY = screenHeight / frame.height; // 844/1080

// Face bounds don't align with actual face position on screen
});
< /code>
Вопрос: Как правильно обрабатывать ориентацию кадра, чтобы правильно отобразить координаты лица для координат экрана?This works fine on iOS but crashes Android
const frameProcessor = useFrameProcessor((frame) => {
'worklet';

if (Platform.OS === 'android') {
// Even simple operations crash
console.log(frame.width); // This alone can cause issues
return;
}

// iOS lighting analysis (works fine)
const frameBuffer = frame.toArrayBuffer();
const frameData = new Uint8Array(frameBuffer);
// ... process pixels for lighting analysis
});
< /code>
Вопрос: Каков правильный способ безопасно обрабатывать данные кадра на Android без проблем с производительностью? В настоящее время неровное освещение (тени с одной стороны) вызывает ложные срабатывания в анализе кожи. < /P>
Current approach - too simplistic
const analyzeFaceLighting = (frameData, faceBounds) => {
const faceRegion = extractFaceRegion(frameData, faceBounds);
const leftHalf = faceRegion.slice(0, faceRegion.length / 2);
const rightHalf = faceRegion.slice(faceRegion.length / 2);

const leftAvg = calculateAverage(leftHalf);
const rightAvg = calculateAverage(rightHalf);

// This only checks left vs right, not comprehensive enough
const isBalanced = Math.abs(leftAvg - rightAvg) < 20;
return isBalanced;
};
< /code>
Вопрос: как я могу реализовать более сложный анализ освещения, который проверяет даже освещение на всей поверхности (не просто левш против справа)? Настройки < /p>
Для Android Производительность: < /p>
Частота восстановления обработки кадров с помощью RunattargetFps
Упрощенные шаблоны доступа к пиксели
«Попытки управления памятью» < /p>
для освещения: < /p>
Анализ гистограммы
abletring arempling thrind in trainsisting thrind in thrend gistograms witersisting arestiving train -thrind ambient light
Expected Behavior
Face bounds should correctly overlay the actual face regardless of device orientation
Lighting analysis should work smoothly on both iOS and Android
Lighting detection should identify when face has balanced illumination across all regions
Code Context
Here's my current frame processor structure:
const frameProcessor = useFrameProcessor((frame) => {
'worklet';
if (!isCameraActive) return;

runAtTargetFps(8, () => {
try {
const faces = detectFaces(frame);

if (faces.length > 0) {
// Handle coordinate transformation
const transformedBounds = transformCoordinates(
faces[0].bounds,
frame.width,
frame.height,
screenWidth,
screenHeight
);

// Analyze lighting (iOS only currently)
if (Platform.OS === 'ios') {
const lightingResult = analyzeLighting(frame, transformedBounds);
updateLightingState(lightingResult);
}
}
} catch (error) {
console.error('Frame processing error:', error);
}
});
}, []);
< /code>
Любое понимание того, что эти проблемы будут высоко оценены. Особенно необходимы конкретные решения для производительности Android и всестороннего анализа освещения.

Подробнее здесь: https://stackoverflow.com/questions/796 ... nce-proble
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»