A package for video and image processing with captioning capabilities
Project description
vistopics
vistopics (Topic Visualization for Visuals) is a Python package for video and image processing, offering features such as:
- Frame extraction from videos.
- Caption generation for images using OpenAI.
- Video scraping and organization.
- Duplicate frame reduction with efficient algorithms.
- Image scraping and captioning from article URLs.
This package is designed for developers, researchers, and data scientists working on media processing, visualization, or clustering tasks.
Installation
Install vistopics from PyPI using:
pip install vistopics
If you plan to use FastDup for duplicate frame detection, install with:
pip install vistopics[fastdup]
Alternatively, install it directly from the source:
git clone https://github.com/aysedeniz09/VisTopics
cd VisTopics
pip install .
Note: The repository name on GitHub is VisTopics (capitalized), but the package name and Python import name are lowercase vistopics.
Features
Option A: Video-Based Pipeline
- Scrape and download videos from URLs
- Extract frames from the downloaded videos
- Reduce duplicate frames with FastDup
- Generate captions for the cleaned set of frames
Option B: Image URL-Based Pipeline
- Download images from a CSV containing article or image URLs
- Generate captions for the images
Requirements
The following Python libraries are required:
- openai>=1.50.0
- opencv-python>=4.9.0,<4.10
- opencv-python-headless>=4.9.0,<4.10
- pandas>=2.0.3,<2.2
- requests>=2.28.0
- yt-dlp>=2024.12.6
- gradio>=3.36.0
- aiofiles>=23.0
- pydantic>=2.8
- urllib3>=1.26
- beautifulsoup4>=4.12
- tqdm>=4.66
Note: To use FastDup-based functionality (limiting_frames), you must additionally install:
pip install vistopics[fastdup]
Install base dependencies with:
pip install -r requirements.txt
Usage
Option A: Video-Based Pipeline
1. Video Scraping
from vistopics import video_download
video_download(
input_df_path="test_data.csv",
output_df_path="cleaned_videos.csv",
output_dir="downloaded_videos",
link_column="Link",
title_column="Page Name"
)
2. Frame Extraction
from vistopics import extract_frames
extract_frames(
videofolder="downloaded_videos",
images_folder="images",
frame_rate=1
)
3. Duplicate Frame Reduction
from vistopics import limiting_frames
limiting_frames(
path="images",
output_file="reduced_frame_list.csv",
ccthreshold=0.8
)
This step requires the optional fastdup dependency:
pip install vistopics[fastdup]
4. Caption Generation
from vistopics import get_caption
get_caption(
mykey="your-open-ai-api-key",
path_in="images",
captions_file="captions_file.csv",
model="gpt-4o-mini"
)
Option B: Image URL-Based Pipeline
1. Download Images from URLs
from vistopics import download_images_from_url
download_images_from_url(
input_csv="urls.csv", # must have a 'url' column
output_csv="captions.csv",
image_dir="images"
)
2. Caption Generation
from vistopics import get_caption
get_caption(
mykey="your-open-ai-api-key",
path_in="images",
captions_file="captions_file.csv",
model="gpt-4o-mini"
)
License
This project is licensed under the MIT License. See the LICENSE file for details.
Contributing
We welcome contributions! If you'd like to contribute:
- Fork the repository
- Create a feature branch:
git checkout -b feature-name
- Commit your changes:
git commit -m "Add new feature"
- Push to the branch:
git push origin feature-name
- Open a pull request
For a full research example using vistopics, see:
Lokmanoglu, A. D., & Walter, D. (2025, accepted). Topic Modeling of Video and Image Data: A Visual Semantic Unsupervised Approach. Communication Methods and Measures. Replication Code on GitHub
Contact
If you have any questions or feedback, feel free to contact:
Ayse Lokmanoglu & Dror Walter GitHub: https://github.com/aysedeniz09/VisTopics
Acknowledgments
- OpenAI for providing APIs used in the captioning feature, and for Researcher Access Program
- FastDup for efficient duplicate detection
- OpenCV for video and image processing utilities
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file vistopics-0.1.7.tar.gz.
File metadata
- Download URL: vistopics-0.1.7.tar.gz
- Upload date:
- Size: 12.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ad3b0d53278cf18515f3378dde683dc84a242a7e374bc1278eb747ba29357cb5
|
|
| MD5 |
4e0e05332fc83c09483391f79eaccccc
|
|
| BLAKE2b-256 |
ba4c4e2173ab087dd461d936418adf70bc8c769fa19943cfd5c64356a3c963be
|
File details
Details for the file vistopics-0.1.7-py3-none-any.whl.
File metadata
- Download URL: vistopics-0.1.7-py3-none-any.whl
- Upload date:
- Size: 12.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4fcd2326e617d520c39a04c41ebac8702b3f38c62e7944aa0a3b94400eac5c7f
|
|
| MD5 |
de0e79cdd47005e425430559e9c5d088
|
|
| BLAKE2b-256 |
e2af5aa8b8255c36b0997c5b4225d12a0a7a55dc07388d3276e046cc93b97b60
|