Opencv手工选择图片区域去水印

QT 插件化图像算法研究平台的功能在持续完善,补充了一个人工选择图片区域的功能。

其中,图片选择功能主要代码如下:

QRect GLImageWidget::getSeleted()
{QRect ajust(0,0,0,0);if(image.isNull() || !hasSelection)return ajust;double w=1.0* imageSize.width()/ adaptImageSize.width();double h=1.0* imageSize.height()/ adaptImageSize.height();ajust.setLeft((selection.left()-leftPos)*w/scaleVal);ajust.setWidth(selection.width()*w/scaleVal);ajust.setTop((selection.top()-topPos)*h/scaleVal);ajust.setHeight(selection.height()*h/scaleVal);return ajust;
}

需要考虑因素:图片原始大小、窗口大小、图片显示在窗口的大小、图片在窗口的移动位置、图片在窗口的缩放、用户在窗口上框选的矩阵。

手工选择图片区域去水印 效果如下:左上角人工框选处的文字给去除了。

主要代码参考如下:

void deWaterMarkSelection(Mat &input,Mat &output,Mat &src,string)
{auto selectRect= processWinGetSelection();if(selectRect.width()==0){output=input;return;}Mat mask = Mat::zeros(input.size(), CV_8U);auto topLeft=selectRect.topLeft();auto bottomRight=selectRect.bottomRight();Point rookPoints[1][4];rookPoints[0][0] =Point(topLeft.x(),topLeft.y());//左上角rookPoints[0][1] = Point(bottomRight.x(),topLeft.y());//右上角rookPoints[0][2] = Point(bottomRight.x(),bottomRight.y());//右下角rookPoints[0][3] =Point(topLeft.x(),bottomRight.y());//左下角int npt[]={4};//二维数组 每列长度const Point* ppt[1] = {rookPoints[0]};//所有多边形点坐标fillPoly(mask, ppt, npt, 1, Scalar::all(255));//使用inpaint进行图像修复Mat result;inpaint(src, mask, output, 1, INPAINT_NS);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/97220.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【kubernetes系列】Calico原理及配置

概述 Calico是针对容器,虚拟机和基于主机的本机工作负载的开源网络和网络安全解决方案。 Calico支持广泛的平台,包括Kubernetes,OpenShift,Docker EE,OpenStack和裸机服务。 Calico在每个计算节点都利用Linux Kernel实…

飞书接入ChatGPT,实现智能化问答助手功能,提供高效的解答服务

文章目录 前言环境列表1.飞书设置2.克隆feishu-chatgpt项目3.配置config.yaml文件4.运行feishu-chatgpt项目5.安装cpolar内网穿透6.固定公网地址7.机器人权限配置8.创建版本9.创建测试企业10. 机器人测试 前言 在飞书中创建chatGPT机器人并且对话,在下面操作步骤中…

2023开学礼《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书南京师范大学图书馆

2023开学礼《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书南京师范大学图书馆

Android片段

如果你希望应用根据不同的环境有不同的外观和行为,这种情况下就需要片段,片段是可以由不同活动重用的模块化代码组件。 片段(Fragment)是活动(Activity)的一种模块化部分,表示活动中的行为或界面…

基于串口校时的数字钟设计

文章目录 设计目标硬件设计数码管串口 软件设计顶层模块串口接收模块数据处理模块时钟模块串口发送模块 总结 设计目标 环境:ACX720开发板 实现功能: 数码管能够显示时分秒能够接收串口数据修改时间能够将当前时间以1s一次速率发送到电脑 硬件设计 数…

Midjourney学习(一)prompt的基础

prompt目录 sd和mj的比较prompt组成风格表现风格时代描述表情色彩情绪环境 sd和mj的比较 自从去年9月份开始,sd就变得非常或火,跟它一起的还有一个midjourney。 他们就像是程序界的两种模式,sd是开源的,有更多的可能性更可控。但是…

Linux之基于HTTPS的静态网站

目录 Linux之基于HTTPS的静态网站 定义 SSL协议 使用Apachemod_ssl组件的加密认证网站 mod_ssl模组 安装 配置文件 ssl配置文件的主要参数 案例 案例1 --- 搭建HTTPSSL的加密认证的web服务器 案例2 --- 组建多个子目录的网站www.joker.com,该网站下有2个子…

Royal TSX 6 Mac多协议远程软件

Royal TSX是一款功能强大的远程桌面管理软件,适用于Mac操作系统。它允许用户通过一个集成的界面来管理和访问多个远程计算机和服务器。 Royal TSX支持多种远程协议,包括RDP、VNC、SSH、Telnet和FTP等,可以方便地连接到Windows、Linux、Mac和其…

Spring Cloud--从零开始搭建微服务基础环境【四】

😀前言 本篇博文是关于Spring Cloud–从零开始搭建微服务基础环境【四】,希望你能够喜欢 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,…

手把手教你用Vite构建第一个Vue3项目

写在前面 在之前的文章中写过“如何创建第一个vue项目”,但那篇文章写的是创建vue2的 项目。 传送门如何创建第一个vue项目 打开Vue.js官网:https://cn.vuejs.org/,我们会发现Vue 2 将于 2023 年 12 月 31 日停止维护 虽然Vue2的项目还不少&#xff0…

【VL tracking】Towards Unified Token Learning for Vision-Language Tracking

不知道什么原因学校认证账号进不去,下载不了最新的PDF 广西师范大学 | 国科大 | 厦大 代码开源 zhihu指路👉【VL tracking】MMTrack阅读 问题 一方面,传统的VL tracking方法需要昂贵的先验知识。例如,一些tracker是专门用于bou…

3.2.0 终极预告!云原生支持新增 Spark on k8S 支持

视频贡献者 | 王维饶 视频制作者 | 聂同学 编辑整理 | Debra Chen Apache DolphinScheduler 3.2.0 版本将发布,为了让大家提前了解到此版本更新的主要内容,我们已经制作了几期视频和内容做了大致介绍,包括《重磅预告!Apache Dol…