当前位置: 首页 > news >正文

基于Qt和OpenCV的图片与视频编辑器

应用技术:Qt C++、OpenCV、多线程、单例模式,qss样式表、OpenGL、ffmpeg。 本项目为Qt mingw6.5.3版本,QtCreator编写运行。 

void XVideoWidget::do_setImage(cv::Mat mat)
{QImage::Format fmt = QImage::Format_RGB888;int pixSize = 3;//处理后是灰度图if (mat.type() == CV_8UC1) {fmt = QImage::Format_Grayscale8;pixSize = 1;}//RGB图if (img.isNull() || img.format() != fmt) {  //灰度图后,设置回rgb图delete img.bits();uchar* buf = new uchar[width() / 4 * 4  * height() / 4 * 4 * pixSize];//img为显示窗口大小(要4的倍数)img = QImage(buf, width() / 4 * 4, height() / 4 * 4, fmt);}//拷贝img大小的Matcv::Mat des;cv::resize(mat, des, cv::Size(img.size().width(), img.size().height()));//设置图像颜色格式if (pixSize > 1) {cv::cvtColor(des, des, cv::COLOR_BGR2RGB);}//复制内存空间memcpy(img.bits(), des.data, des.cols * des.rows * des.elemSize());update();
}
void XVideoThread::run()
{cv::Mat mat1;for (;;) {mutex.lock();if (isExit) {mutex.unlock();//析构的时候退出break;}//判断视频是否打开if (!cap1.isOpened()) {mutex.unlock();msleep(5);continue;}if (!isPlay) { //暂停状态mutex.unlock();msleep(5);continue;}//读取一帧视频,解码,颜色转换int cur = cap1.get(cv::CAP_PROP_POS_FRAMES); //获取当前帧数if ((endPos > 0 && cur >= endPos) || !cap1.read(mat1) || mat1.empty()) {mutex.unlock();//导出在结尾位置,停止导出if(isWrite) {   //正在导出视频stopSave();emit sigSaveEnd();}msleep(5);continue;}cv::Mat mat2 = mark;//视频融合if (cap2.isOpened()) {cap2.read(mat2);}//非导出状态下,显示原图像if (!isWrite) {emit sigViewImage1(mat1);if (!mat2.empty()) {emit sigViewImage2(mat2);}}//通过过滤器处理cv::Mat des = XFilter::getInstance()->fFilter(mat1, mat2);//非导出状态下,显示生成后图像if (!isWrite) {emit sigViewDes(des);}int s = 0;s = 850 / fps; //根据fps设置视频播放速度if (isWrite) { //导出视频时,不需要fpss = 1;vw.write(des);}msleep(s);mutex.unlock();}
}

项目描述:可分别对图片和对视频进行编辑。对图片的编辑功能包括:亮度,对比度,滤波,二值化,边缘检测,缩放,旋转,尺寸修改,图片转base64,base64转图片,保存图片。对 视频的编辑功能包括:视频播放和停止,亮度,对比度,视频导出,视频旋转,镜像,尺寸调整,二值化,添加水印,视频合并,视频融合,视频和音频剪辑。qss手动改变编 辑器的颜色样式。 主要工作:用两个界面分别实现图片处理和视频处理,主要运用OpenCV的函数对图片进行各种处理。大部分处理选择同一个滑动条控制参数,用qss设置了多种界面样式。 视频编辑中,OpenCV读取原视频的每一帧实现视频播放,并采用了多线程,子线程采用单例模式,通过加互斥锁保证线程安全。在视频播放的子线程中根据fps调整速度,读取 视频每一帧在OpenGL Widget上显示,滑动控制视频播放。 对视频的图像处理操作为采用OpenCV的函数,对视频的每一帧进行处理,主界面再获取每一帧,播放处理后的视频。

基于Qt和OpenCV的图片与视频编辑器_720P 高清

http://www.dtcms.com/a/295742.html

相关文章:

  • 完整指南:使用Apache htpasswd为Chronograf配置基础认证及功能详解
  • 响应式前端设计:CSS 自适应布局与字体大小的最佳实践
  • spring boot h2数据库无法链接问题
  • 数学基础弱能学好大数据技术吗?
  • JimuReport 积木报表 v2.1.1 版本发布,免费开源的报表和大屏
  • 基于定制开发开源AI智能名片S2B2C商城小程序源码的立减/立得类活动创新设计与应用研究
  • 2025年计算机网络与教育科学国际会议(ICCNES 2025)
  • Spring MVC中常用注解_笔记
  • Kafka入门指南:从零开始掌握分布式消息队列
  • uniapp vue3版本中使用pinia 以及持久化处理
  • 【自用】NLP算法面经(6)
  • TCP重传率优化在云服务器网络协议栈的调优实践
  • MySQL高可用部署
  • 深度分析Android多线程编程
  • aml1-eto 移植后多长时间转阴
  • Android跨进程通信完全教程:从基础到实战
  • 从0开始学习R语言-Day56--空间变系数模型
  • 进阶向:基于Python的轻量级Markdown笔记管理器
  • git鉴权失败问题每次clone 都要输入用户名密码问题
  • Two Knights(数学归纳)
  • 本地部署Jupyter服务,没有公网IP如何用内网穿透工具实现外网远程访问?
  • 人形机器人_双足行走动力学:Maxwell模型及在拟合肌腱特性中的应用
  • Linux 下安装Python指定版本(可离线安装)
  • Java学习----工厂方法模式
  • 线程通信模型
  • 中国西北典型绿洲区土壤水分特征(2018-2019年)
  • [火了]-----FastGPT 插件系统架构演进:从 Monorepo 到独立生态
  • Spring MVC 统一响应格式:ResponseBodyAdvice 从浅入深
  • 快速将前端得依赖打为tar包(yarn.lock版本)并且推送至nexus私有依赖仓库(笔记)
  • 【工具变量】省市县空气流通系数数据集(1940-2025.3年)