This commit is contained in:
afiqzudinhadi 2024-06-28 20:44:21 +08:00
commit b6ed2f7e4a
12 changed files with 4272 additions and 0 deletions

63
README.md Normal file
View file

@ -0,0 +1,63 @@
# Face Detection and Overlay Image Project
This project is meant to explore and understand the functions of Telegram bots. This project uses the `face-api.js` library to detect faces in an image and overlay an image on the detected faces.
## Setup
1. Clone the repository.
2. Run `npm install` to install the dependencies.
3. Create a `.env` file in the root directory and add your Telegram bot token as `TELEGRAM_BOT_TOKEN`.
### Arm64
Note: For arm64 architecture, there is an issue with `canvas` library. To fix this issue run `brew install pkg-config cairo pango libpng jpeg giflib librsvg` first, given that you have homebrew installed, and then run `npm install`.
https://brew.sh/
https://github.com/Automattic/node-canvas/issues/1662#issuecomment-1465269869
### Telegram
To get the telegram bot token, visit [https://t.me/BotFather](https://t.me/BotFather) and create a new bot.
Telegram documentation: https://core.telegram.org/bots/tutorial
### MongoDB
Get your MongoDB cert and the DB's URI from the website. You might have to whitelist connections from your IP or server in your MongoDB's settings
## Usage
Run `node index.js` to start the application.
Run `npm run start` to start the application in the background.
Open Telegram, go to your bot, send /start to start the bot and send it a photo
## Project Structure
- `index.js`: The main application file. It sets up the face detection models, defines the functions for face detection and overlaying images, and handles the Telegram bot interactions.
- `assets/`: Directory containing the overlay image.
- `models/`: Directory containing the face detection models. The models can be downloaded from the [face-api.js Github repository](https://github.com/justadudewhohacks/face-api.js/tree/master/weights).
## Functions
- `detectFaces(imagePath)`: Detects faces in the given image.
- `overlayImageOnFaces(imagePath, detections)`: Overlays an image on the detected faces.
## Environment Variables
- `TELEGRAM_BOT_TOKEN`: Your Telegram bot token.
- `MONGODB_URI`: Your MongoDB URI.
- `MONGO_DB`: Your MongoDB database name.
- `MONGODB_CERT_PATH`: Path to your MongoDB certificate. (If you're using cloud MongoDB)
- `MONGODB_COLLECTION`: Your MongoDB collection name.
## Dependencies
- `node-telegram-bot-api`: For interacting with the Telegram API.
- `face-api.js`: For face detection.
- `canvas`: For image manipulation.
- `dotenv`: For loading environment variables from a `.env` file.
- `mongodb`: For connecting to the MongoDB database.
- `pm2`: For managing the application in the background.