Как в режиме реального времени просмотреть изменение видеомагнитофона на камере, такой как Vigo Video Hypstar

Я хочу изменить нижнее наложение предварительного просмотра Surface с помощью gif или изображения Как у Виго

Как это

введите описание изображения здесь

Пожалуйста, скажите мне какой-нибудь sdk или что я использую для этого фильтра

Я могу изменить наложение на вид сверху, используя это

Справка

 PictureCallback cameraPictureCallbackJpeg = new PictureCallback() 
  {  
    @Override
    public void onPictureTaken(byte[] data, Camera camera) 
    {
      // TODO Auto-generated method stub   
      Bitmap cameraBitmap = BitmapFactory.decodeByteArray
                                                                  (data, 0, data.length);

   int   wid = cameraBitmap.getWidth();
     int  hgt = cameraBitmap.getHeight();

    //  Toast.makeText(getApplicationContext(), wid+""+hgt, Toast.LENGTH_SHORT).show();
      Bitmap newImage = Bitmap.createBitmap
                                        (wid, hgt, Bitmap.Config.ARGB_8888);

      Canvas canvas = new Canvas(newImage);

      canvas.drawBitmap(cameraBitmap, 0f, 0f, null);

     Drawable drawable = getResources().getDrawable
                                                          (R.drawable.mark3);
      drawable.setBounds(20, 30, drawable.getIntrinsicWidth()+20, drawable.getIntrinsicHeight()+30);
    drawable.draw(canvas);



      File storagePath = new File(Environment.
                    getExternalStorageDirectory() + "/PhotoAR/"); 
      storagePath.mkdirs(); 

      File myImage = new File(storagePath,
                    Long.toString(System.currentTimeMillis()) + ".jpg");

      try
      {
        FileOutputStream out = new FileOutputStream(myImage);
        newImage.compress(Bitmap.CompressFormat.JPEG, 80, out);


        out.flush();
        out.close();
      }
      catch(FileNotFoundException e)
      {
        Log.d("In Saving File", e + "");    
      }
      catch(IOException e)
      {
        Log.d("In Saving File", e + "");
      }

      camera.startPreview();



      newImage.recycle();
      newImage = null;

      Intent intent = new Intent();
      intent.setAction(Intent.ACTION_VIEW);

      intent.setDataAndType(Uri.parse("file://" + myImage.getAbsolutePath()), "image/*");
      startActivity(intent);

    }
  };

результат этого

введите описание изображения здесь

введите описание изображения здесь


person Arjun saini    schedule 11.04.2018    source источник
comment
Глядя на ожидаемый результат, я считаю, что это связано с обнаружением краев. Взгляните на эту библиотеку и на этот публикация   -  person pradithya aria    schedule 17.04.2018
comment
Вы просто хотите накладывать изображения на GIF? Я не понимаю, что именно вы хотите сделать.   -  person zindarod    schedule 10.05.2018
comment
Да, я хочу изменить предварительный просмотр камеры в режиме реального времени, кроме человеческого тела с помощью Gif, jpg или других... Точно так же, как это делает Хромакей... Зеленый фон Заменить....   -  person Arjun saini    schedule 10.05.2018
comment
пожалуйста, удалите тег opencv. я уверен, что это не связано с opencv. если вы не хотите использовать opencv для достижения этой цели. также этот вопрос кажется слишком широким   -  person kishea    schedule 10.05.2018


Ответы (2)


Используйте GLSurfaceView. Основная идея состоит в том, чтобы иметь предварительный просмотр камеры в GLSurfaceView и рисовать визуализацию OpenGL.
Обычный подход заключается в создании подкласса GLSurfaceView и реализации GLSurfaceView.Renderer. Задачи рендеринга выполняются путем реализации интерфейса.

public class CameraRenderer extends GLSurfaceView implements GLSurfaceView.Renderer, SurfaceTexture.OnFrameAvailableListener { 
    @Override
    public synchronized void onSurfaceCreated(GL10 gl, EGLConfig config) {
        ...
        //compile shader here
    }

    @Override
    public synchronized void onSurfaceChanged(GL10 gl, int width, int height) {
        ...
        //open camera and start preview here
    }

    @Override
    public synchronized void onDrawFrame(GL10 gl) {
        ...
        //draw frame as required
    }

}

Посмотрите эту графику проект, чтобы получить лучшее представление и этот проект, который близок к тому, что вы пытаетесь сделать .

person Udit Mukherjee    schedule 16.05.2018

Для этого необходимо использовать внешние библиотеки.

для использования фильтров в камере и таких виртуальных эффектов.

Попробуйте эти библиотеки:

1) CameraFilter

2)Это базовые фильтры.

Здесь вы можете узнать, как реализовать эти базовые фильтры.

3)EffectFactory

Это такие эффекты, как Instagram.

3)FaceLandMarks

Это такие же эффекты, как Snapchat, но для этого вам нужно будет приобрести ключ для его использования на этой странице API.

Надеюсь, это поможет. Если это не ваш ответ, игнорируйте этот ответ.

person Mrunal Chauhan    schedule 16.05.2018
comment
если это полезно для вас, и если ваша работа выполнена этим, отметьте этот ответ как принятый ответ. @Арджунсаини - person Mrunal Chauhan; 17.05.2018