Попробуйте получить доступ и изменить значения пикселей камеры на Vuforia и Unity

Я хочу получить доступ к камере (ПК или мобильному устройству) до того, как будет выполнено распознавание. Я хочу изменить значение пикселей в зависимости от яркости и контрастности. Моя цель - оптимизировать отслеживание с помощью vuforia, растягивая или выравнивая значения в виде гистограммы при изменении освещения.

Я получаю значения пикселей из Изображение камеры Vuforia:

Мне удалось восстановить значения пикселей изображения, но я не могу их изменить.

Я пробовал этот метод, чтобы установить для всех пикселей значение 0 в методе OnTrackablesUpdated: image.Pixels.SetValue(byte value, index); Мое распознавание снова работает, оно не должно работать, если все мои пиксели равны нулю.

Как я могу изменить значения пикселей камеры?

Вот мой код:

using UnityEngine;
using System.Collections;
using Vuforia;
using System;

public class CameraImageAccess : MonoBehaviour
{
private Image.PIXEL_FORMAT mPixelFormat = Image.PIXEL_FORMAT.UNKNOWN_FORMAT;

private bool mAccessCameraImage = true;
private bool mFormatRegistered = false;

void Start()
{
    mPixelFormat = Image.PIXEL_FORMAT.RGB888; // Use RGB888 for mobile

    // Register Vuforia life-cycle callbacks:
    VuforiaARController.Instance.RegisterVuforiaStartedCallback(OnVuforiaStarted);
    VuforiaARController.Instance.RegisterTrackablesUpdatedCallback(OnTrackablesUpdated);
    VuforiaARController.Instance.RegisterOnPauseCallback(OnPause);
}

void OnVuforiaStarted()
{
    // Try register camera image format
    if (CameraDevice.Instance.SetFrameFormat(mPixelFormat, true))
    {
        Debug.Log("Successfully registered pixel format " + mPixelFormat.ToString());
        mFormatRegistered = true;
    }
    else
    {
        Debug.LogError(
            "\nFailed to register pixel format: " + mPixelFormat.ToString() +
            "\nThe format may be unsupported by your device." +
            "\nConsider using a different pixel format.\n");
        mFormatRegistered = false;
    }
}

/// <summary>
/// Called each time the Vuforia state is updated
/// </summary>
void OnTrackablesUpdated()
{
    if (mFormatRegistered)
    {
        if (mAccessCameraImage)
        {
            Vuforia.Image image = CameraDevice.Instance.GetCameraImage(mPixelFormat);

            if (image != null)
            {
                byte[] pixels = image.Pixels;
            }
        }
    }
}

/// <summary>
/// Called when app is paused / resumed
/// </summary>
void OnPause(bool paused)
{
    if (paused)
    {
        Debug.Log("App was paused");
        UnregisterFormat();
    }
    else
    {
        Debug.Log("App was resumed");
        RegisterFormat();
    }
}

/// <summary>
/// Register the camera pixel format
/// </summary>
void RegisterFormat()
{
    if (CameraDevice.Instance.SetFrameFormat(mPixelFormat, true))
    {
        Debug.Log("Successfully registered camera pixel format " + mPixelFormat.ToString());
        mFormatRegistered = true;
    }
    else
    {
        Debug.LogError("Failed to register camera pixel format " + mPixelFormat.ToString());
        mFormatRegistered = false;
    }
}

/// <summary>
/// Unregister the camera pixel format (e.g. call this when app is paused)
/// </summary>
void UnregisterFormat()
{
    Debug.Log("Unregistering camera pixel format " + mPixelFormat.ToString());
    CameraDevice.Instance.SetFrameFormat(mPixelFormat, false);
    mFormatRegistered = false;
}
}   

Вы нашли решение для установки значений пикселей?

Derzu 27.03.2021 22:49
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
1
620
0

Другие вопросы по теме