Multifunctional Camera App(MCA)

Shouyan Li

a camera app which have multiple functions including apply filters, share image and object detection

Demo Video and App description

The main camera function is implemented with the relatively new CameraX Api provided by google. The exposure compensate function and zoom in/out function used "camera control()" from the Api. The designed tap-to-focus function, which is tried but I didn't make it to work due to a lack of documentation of such as the "meteringpointfactory" in java language, was substituted with the zoom function. The face detection was implement with google ml kit along with the code provided in HW2.

The google map API, GPS along with locationservice, and Geodecoder is used to get the current city name, which is used in the geomarker function. In terms of the image editing, I decided that I can directly apply color matrix on the bitmap of the image instead of using a much more complicated OpenCV API. From the demo we can see that the brightness function works fine but the contrast adjustment doesn't provide a great results, also when moving the seek bar, the app responses slowly, thus meaning the bitmap manipulation method could be optimized, however, I haven't found better solutions yet.

Firebase real-time database was planned to be used for storing the image on cloud. However unlike just sending a string of card number in HW3, the bitmap is too large to be sent to real-time database. Therefore an service intent which can open the phone gallery and choose images is used to make up the missing designed function.

Another difficulty is editing the image chosen from the gallery, which will be subtitled to the previously taken image when I try to edit it. Hours of work have been devoted to solve the problem but nothing have been done. The next step would be trying to put the image in the shared preference when choosing the image. Also, a new method which including generating new bitmap and canvas need to be created to include the geomarker in the bitmap which can be saved locally.

API for the app:

Functionalities:

Focus and Exposure control

Face and Object Detection

Image Brightness and Contrast Adjustment

Apply color filters to images

Upload Images to Firebase and Save Image to local storage

Share Image to social app

Add a Geo Marker to Image

Demo UI

Weekly Update

Week 1 ( Nov 8 2021 - Nov 14 2021 )

  • Decided the goal, functionalities, API used and demo cases for the App

  • Presentation for the project

  • Created a demo UI

Week 2 ( Nov 15 2021 - Nov 21 2021 )

  • Start the building of the project

  • Built basic camera function

Week 3 ( Nov 22 2021 - Nov 28 2021 )

  • Implement color /brightness / contrast with bitmap manuplation instead of using open cv


Week 4 ( Nov 29 2021 - Dec 5 2021 )

  • Implement the Face/obejct recognication function with ML kit