仿造微信截图工具

为解决大学社团活动外联需求,作者自制Python代码,利用OpenCV实现朋友圈截图中特定区域的图片替换功能。通过滑动条调整,轻松选取并替换目标区域,实现一键广告更新。
部署运行你感兴趣的模型镜像

起因:身处大学身不由己,总有些社团活动需要拉外联啥的,一拉外联就的朋友圈发广告,还不能发私密。为了一劳永逸的解决这个问题,自己用pyhton写了一个类似于p图的代码。

目的:将一张朋友圈截图中的某一矩形区域替换为另一图片中的矩形区域。

原理:利用opencv给图片加上滑动条以及实现截取区域。

使用方法:在source窗口截取矩形区域,在material窗口点击会自动勾出等大矩形区域,按空格保存图片。

不足:滑动条部分,两张图片是共享的,现在懒得改了。。。。

代码:

#include<opencv.hpp>
#include<iostream>

using namespace cv;
using namespace std;

int h_x = 0, v_y = 0, d_x = 0, d_y = 0;  //记录滑动条变化值,以及保存当前值
Rect v_bar, h_bar;
bool x_change = false;
bool y_change = false; //判断是否改变
bool drawbox = false;
int width, height;
Rect source_rect, _rectangle, product_rect;
int img_x=0, img_y=0;   //记录滑动后截取图片在原图片中的位置
Rect roi_sour, roi_mater;    //进行p图的部分

void on_mouse(int event, int x, int y, int flags, void* param);
void draw_scrolls(Mat src_img,Mat& tempimg, const char* title, int width = 1400, int height = 700);
void DrawRect(Mat& img, Rect box);
void on_mouse_2(int event, int x, int y, int flags, void* param);
void ROI_linearBlending(Mat srcImg_1, Mat srcImg_2);

int main()
{
	const char* title = "source";
	const char* title2 = "material";
	Mat srcimg = imread("E:\\material\\pyq1.png");
	Mat srcimg2 = imread("E:\\material\\pyq2.png");
	Mat dstimg1,dstimg2;
	Mat tempimg1,tempimg2;
	namedWindow(title, 1);
	namedWindow(title2, 1);
	setMouseCallback(title, on_mouse);
	setMouseCallback(title2, on_mouse_2);
	while (true)
	{
		char c = waitKey(10);
		draw_scrolls(srcimg, dst

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

创建模拟的微信聊天记录界面并支持消息转发功能是一项复杂的开发任务,涉及多个方面的技术。下面将详细介绍这一过程。 ### 创建基础聊天界面 为了构建一个仿微信的聊天界面,可以采用Qt框架来完成此操作[^1]。Qt是一个跨平台的应用程序开发框架,适用于Windows、Linux以及macOS等多个操作系统。使用Qt Designer设计图形用户界面(UI),通过拖拽控件快速搭建出所需的布局结构。对于聊天窗口而言,主要由输入框、发送按钮和显示对话内容的消息列表构成。 ```cpp // mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QStringList> QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = nullptr); ~MainWindow(); private slots: void on_sendButton_clicked(); private: Ui::MainWindow *ui; }; #endif // MAINWINDOW_H // mainwindow.cpp #include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); connect(ui->sendButton, &QPushButton::clicked, this, &MainWindow::on_sendButton_clicked); } void MainWindow::on_sendButton_clicked() { QString messageText = ui->messageInput->text(); if (!messageText.isEmpty()) { ui->chatView->append(messageText); // 显示新消息到聊天视图中 ui->messageInput->clear(); // 清除输入框中的文本 } } ``` 上述代码片段展示了如何设置基本的UI组件连接逻辑,当点击发送按钮时会触发`on_sendButton_clicked()`槽函数处理事件,在这里实现了简单的新消息追加至聊天区域的功能。 ### 实现消息转发特性 为了让应用程序具备消息转发的能力,需要扩展原有的模型以适应新的需求。具体来说: - **数据存储优化**:每条消息不仅保存其本身的内容,还需额外记录一些元数据比如时间戳、发送者ID等信息;同时增加字段用于标记该条目是否已被转发过。 - **交互设计调整**:为用户提供直观的方式选择要分享的信息项,并提供相应的菜单选项让用户能够轻松发起转发表单流程。 考虑到多端兼容性的要求,如果目标是在H5网页/支付宝微信小程序等多种平台上部署,则建议基于uni-app或其他类似的前端框架来进行开发工作[^2]。这些工具允许一次编写业务逻辑代码就能运行于不同类型的客户端设备之上,极大提高了项目的可移植性和维护效率。 然而值得注意的是,关于获取真实社交软件内部的数据如微信聊天记录等内容的行为可能违反服务条款甚至触犯法律底线,因此不推荐也不应该尝试此类做法[^3]。相反地,专注于合法合规范围内模仿用户体验的设计才是更值得提倡的方向。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值