【Opencv实战】Python神器 | ps做印章太麻烦?无法拒绝的提取印章神技能,很多人都不知道~(附源码)

前言

哈喽,大家好,我是你们的栗子同学鸭~

更新了很久的爬虫内容啦,已经吸收完了没?

印章作是我们工作中和生活中会经常接触到的东西,一般用来代表某个个体或者群体,有时候

我们需要复刻一些文件,或者是作品上的印章等等情况时,就需要我们提取一些电子印章。

所有文章完整的素材+源码都在👇👇

粉丝白嫖源码福利,请移步至CSDN社区或文末公众hao即可免费。

PS——

注意注意注意:

第二百八十条 伪造、变造、买卖或者盗窃、抢夺、毁灭国家机关的公文、证件、印章的,处三

年以下有期徒刑、拘役、管制或者剥夺政治权利;情节严重的,处三年以上十年以下有期徒

刑。

伪造公司、企业、事业单位、人民团体的印章的,处三年以下有期徒刑、拘役、管制或者剥夺

政治权利。

在看正文之前,各位先看下这条刑法,不要对印章做不该做的事情啊!(重要的事情记得哈)

前几天就有一个小伙伴儿问我:

博主博主,求教一下,老板给我一个工作,说做完就可以下班了——合同上的电子印章让我给

用PS提取下来,奈何PS没学好,搞了一个小时都没搞明白,急死了都......

小编当场回答,说PS我也不会,没办法啊......but我会Python啊,让小伙伴儿等等,给我10分

钟时间,保证然他下班!

但对于ps基础不好的朋友,不会环绕输入文字,不会保存透明格式图片,不会对齐怎么办??

想要给提取一些印章?会ps但是嫌ps制作流程太麻烦?弄个弄东西花半天时间得不偿失!

那就来看看这款印章提取器吧,今天小编教大家一键提取神器。

正文

1)运行环境 

 环境安装:python 3.8: 解释器、pycharm: 代码编辑器、opencv、numpy、部

分自带的模块 直接安装Python就可以使用了。

 相对应的安装包/安装教程/激活码/使用教程/学习资料/工具插件 可以直接找我厚台获取 。 2)模块安装 

 第三方库的安装方式如下: 一般安装:pip install +模块名 

镜像源安装:pip install -i https://pypi.douban.com/simple/+模块名 

(还有很多国内镜像源,这里是豆瓣的用习惯 了,其他镜像源可以去看下之前文章都有的)

模块安装问题可以详细的找我给大家讲一下的哈,之前其实也有的文章写了几个点的。 

2)代码展示

import cv2
import numpy as npclass Seal:def __init__(self, img_path):"""初始化图片:param img_path: 原始图片路径        """self.image = cv2.imread(img_path)self.img_shape = self.image.shapeself.file_name = img_path.split('.')[0].split('\\')[-1]def unify_img_size(self):"""统一图片的大小:return:返回一张未处理的目标图片        """img_w = 650 if self.img_shape[1] > 600 else 400self.image = cv2.resize(self.image, (img_w, int(img_w * self.img_shape[0] / self.img_shape[1])), interpolation=cv2.IMREAD_COLOR)impng = cv2.cvtColor(self.image.copy(), cv2.COLOR_RGB2RGBA)return impngdef img_binaryzation(self,hue_image, low_range, high_range, imgpng):th = cv2.inRange(hue_image, low_range, high_range)element = cv2.getStructuringElement(cv2.MORPH_RECT, (1, 1))th = cv2.dilate(th, element)index1 = th == 255print_img = np.zeros(imgpng.shape, np.uint8)print_img[:, :, :] = (255, 255, 255, 0)print_img[index1] = imgpng[index1]  # (0,0,255)return print_imgdef img_enhance(self):imgpng = self.unify_img_size()hue_image = cv2.cvtColor(self.image, cv2.COLOR_BGR2HSV)  # 处理图像色调low_range = np.array([130, 43, 46])  # 设下边界high_range = np.array([180, 255, 255])  # 设上边界print1 = self.img_binaryzation(hue_image, low_range, high_range, imgpng)low_range = np.array([0, 43, 46])high_range = np.array([9, 255, 255])print2 = self.img_binaryzation(hue_image, low_range, high_range, imgpng)imgreal = cv2.add(print2, print1)white_px = np.asarray([255, 255, 255, 255])(row, col, _) = imgreal.shapefor r in range(row):for c in range(col):px = imgreal[r][c]if all(px == white_px):imgreal[r][c] = imgpng[r][c]return imgrealdef extension_img(self):"""边缘检测,截取并输出结果:return:"""imgreal = self.img_enhance()# 扩充图片防止截取部分print4 = cv2.copyMakeBorder(imgreal, 50, 50, 50, 50, cv2.BORDER_CONSTANT, value=[255, 255, 255, 0])print2gray = cv2.cvtColor(print4, cv2.COLOR_RGBA2GRAY)_, grayfirst = cv2.threshold(print2gray, 254, 255, cv2.THRESH_BINARY_INV)element = cv2.getStructuringElement(cv2.MORPH_RECT, (22, 22))img6 = cv2.dilate(grayfirst, element)c_canny_img = cv2.Canny(img6, 10, 10)contours, hierarchy = cv2.findContours(c_canny_img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)areas = []for i, cnt in enumerate(contours):x, y, w, h = cv2.boundingRect(cnt)area = w * hars = [area, i]areas.append(ars)areas = sorted(areas, reverse=True)maxares = areas[:1]x, y, w, h = cv2.boundingRect(contours[maxares[0][1]])print5 = print4[y:(y + h), x:(x + w)]# 高小于宽if print5.shape[0] < print5.shape[1]:zh = int((print5.shape[1] - print5.shape[0]) / 2)print5 = cv2.copyMakeBorder(print5, zh, zh, 0, 0, cv2.BORDER_CONSTANT, value=[255, 255, 255, 0])else:zh = int((print5.shape[0] - print5.shape[1]) / 2)print5 = cv2.copyMakeBorder(print5, 0, 0, zh, zh, cv2.BORDER_CONSTANT, value=[255, 255, 255, 0])resultprint = cv2.resize(print5, (150, 150))cv2.imwrite(r'output\{}_result.png'.format(self.file_name), resultprint)if __name__ == '__main__':s = Seal(r"src\2.jpg")s.extension_img()

3)效果展示

第一组

原图——

效果图——

第二组

总结

如果看完有收获,别忘了转发给你身边的小伙伴分享哦!如果有什么意见或建议,也欢迎在文

末下方点击留言!大家的支持是我永远的动力,我们下期再见!需要代码的还是文末找我拿

哈!

✨完整的素材源码等:可以滴滴我吖!或者点击文末hao自取免费拿的哈~

 🔨推荐往期文章——

项目0.9  【Python实战】WIFI密码小工具,甩万能钥匙十条街,WIFI任意连哦~(附源码)

项目1.0  【Python实战】再分享一款商品秒杀小工具,我已经把压箱底的宝贝拿出来啦~

项目0.7  【Python爬虫实战】 不生产小说,只做网站的搬运工,太牛逼了~(附源码)

项目0.8  【Python抢票神器】火车票枪票软件到底靠谱吗?实测—终极攻略。

🎁文章汇总——

Python文章合集 | (入门到实战、游戏、Turtle、案例等)

(文章汇总还有更多你案例等你来学习啦~源码找我即可免费!)

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

PS制作印章

本文使用Photoshop制作古典印章。印章形式大体分阳文和阴文两种&#xff0c;也称朱文和白文。 1、新建一400X400像素&#xff0c;白色背景的文档&#xff0c;在图层面板双击解锁变成图层0。 2、设前景色为R230&#xff0c;G30,B30。这是模仿印泥的颜色&#xff0c;没有一定的…

ps 制作印章

工具 photoshop cs6 方法/步骤 首先我们新建一个600*400的画布&#xff0c;按Ctrlr调出标尺&#xff0c;然后拖动标尺平分画布宽和高&#xff0c;然后选择椭圆选区工具&#xff0c;以参考线中心为原点&#xff0c;按住ShiftAlt绘制一个正圆&#xff0c;填充前景色为#ff0000。…

华为android系统怎么关闭,华为手机怎么关闭情景智能?华为手机关闭情景智能教程...

华为手机关闭情景智能教程 华为手机有个情景智能&#xff0c;记录你的信息然后辅助你做一些事情&#xff0c;但是有时候就是觉得不太习惯&#xff0c;那么怎么来关闭它呢&#xff0c;首先打开手机&#xff0c;来到手机桌面&#xff0c;找到设置菜单&#xff0c;直接点击进入设置…

如何关闭华为手机智慧助手

手机会自动开启智能助手&#xff0c;当不需要这个功能的时候那就可以选择关闭。所以&#xff0c;今天聊聊华为手机智能助手怎么关闭。 在手机桌面空白处&#xff0c;两个手指往中间滑&#xff0c; 下面的内容转自&#xff1a; https://jingyan.baidu.com/article/0320e2c160…

华为浏览器关闭广告

前言 华为手机和平板在使用自带的华为浏览器时&#xff0c;启动页面或多任务切换时可能会出现广告&#xff0c;这个广告是可以通过设置关闭的&#xff0c;下文介绍关闭方法。 关闭方法 打开华为浏览器&#xff0c;打开设置&#xff0c;选择安全与隐私&#xff0c;点击个性化…

android系统怎么取消,安卓系统hd怎么关闭

大家好&#xff0c;我是时间财富网智能客服时间君&#xff0c;上述问题将由我为大家进行解答。 以vivox27为例&#xff0c;安卓系统hd关闭的方法如下&#xff1a; 1、首先打开手机设置应用&#xff0c;然后在设置页面点击“移动网络”一项进入。 2、接着在“移动网络”页面可以…

华为手机这几个默认设置,一定要关闭,再也不卡顿

华为手机现在是越来越多人使用了&#xff0c;手机用久了自然就会出现卡顿不流畅、占内存&#xff0c;加快耗电的情况。这是因为你手机里自带默认设置开关没有关&#xff0c;关了这几个默认设置&#xff0c;之后手机瞬间流畅。下面我们一起来看看怎么操作吧。 首先&#xff0c;第…

华为手机突然出现HD图标,用了这么久手机你知道什么意思吗?

不知道有多少人发现了华为手机这个图标&#xff0c;通常就显示在手机运营商的边上的HD&#xff0c;当我们在呼叫号码时候也会在手机的拨号界面里面也会显示出来&#xff0c;那么华为手机里面的这个标记到底要有什么特殊的意思呢&#xff1f; 一、"HD"图标到底是什么&…

怎么调出全局搜索_华为手机怎么设置全局搜索,怎么开启以及怎么关闭

今天小编和大家分享的是华为手机怎么设置全局搜索&#xff0c;怎么开启以及怎么关闭&#xff0c;具体的方法步骤是什么&#xff0c;一起来看看吧 一、开启\关闭方式 1、开启方法&#xff1a;在手机桌面下滑即可开启&#xff0c;向右滑动主屏幕进入智慧助手--今天&#xff0c;在…

华为手机永久关闭/开启系统更新(通过ADB模式)

提前准备&#xff1a; &#xff08;1&#xff09;关闭手机的WIFI和数据网络&#xff08;4G&#xff09;。 &#xff08;2&#xff09;“设置” --> “应用和通知” --> “应用管理” &#xff0c;找到“系统更新”&#xff0c;点开“存储”&#xff0c;执行删除数据和清空…

Xshell安装使用教程

简介 Xshell 是一个强大的安全终端模拟软件&#xff0c;它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。Xshell 通过互联网到远程主机的安全连接以及它创新性的设计和特色帮助用户在复杂的网络环境中享受他们的工作。 Xshell可以在Windows界面下用来访问远端不…

人体手臂DH建模

人体上肢手臂DH参数表&#xff1a; 利用Matlab Rotobics Toolbox 进行建模和可视化&#xff1a; L1 Link(d, 0, a, 0, alpha, pi/2); L2 Link(d, 0, a, 0, alpha, pi/2); L3 Link(d, 0.3, a, 0, alpha, pi/2); L4 Link(d, 0, a, 0, alpha, pi/2); L5 Link(d, 0.4, a, 0,…

dh命令(ssh命令详解)

在运行到mov al,dh时提示遭遇无效指令 到这里出了逻辑错误&#xff0c;你应该仔细检查一下源代码 本回答由提问者推荐 单片机加法指令只怎么执行的 A&#xff0c;30H是将30H内存中数加A放到A的存储单元。84H8DH&#xff0c;D是13&#xff0c;加4为17&#xff0c;0到15即0到F这1…

标准DH建模与改进DH建模(一)——标准DH建模方法整理与总结

仅供个人学习记录 前言 DH法一般用一次就丢&#xff0c;然后后面再需要用的时候就会忘&#xff0c;所以本文整理了DH建模法&#xff0c;方便需要使用的时候进行参考。这里不讲原理&#xff0c;只讲结论和方法 1. 建模方法&#xff08;简述&#xff09; DH法可分成以下几步&…

DH参数(Denavit-Hartenberg parameters)

为什么 机械臂关节通常只关于一个轴进行移动&#xff08;旋转或者平移&#xff09;&#xff0c;两段手臂的坐标系之间的变换可以由原本的6变量&#xff08;3位移3旋转&#xff09;简化成4变量&#xff08;DH参数&#xff09;关节自由度高&#xff08;例如手腕可绕3个轴旋转&am…

使用kaptcha生成验证码

前言 说到生成验证码&#xff0c;我们第一个想到的就是kaptcha包&#xff0c;因为这个包已经存在很久了&#xff0c;比较稳定&#xff0c;用的人也多网上的示例代码多&#xff0c;而且很多项目脚手架做验证时也都是用这个框架的。 代码 添加依赖 <!-- 验证码 --><d…

springboot集成kaptcha验证码

导入依赖 <!-- kaptcha 验证码开源组件 --> <dependency><groupId>com.github.penggle</groupId><artifactId>kaptcha</artifactId><version>2.3.2</version> </dependency>kaptcha.xml <?xml version"1.0&q…

kaptcha的使用

目录 一、spring使用kaptcha 1导入依赖 2. 配置文件设置 3.编写请求验证码 4.使用 二、springboot的使用 一、spring使用kaptcha 1导入依赖 <!--验证码--><dependency><groupId>com.github.penggle</groupId><artifactId>kaptcha</arti…

图片验证码kaptcha

1.效果展示&#xff1a; 2.实现方式 1&#xff09;引入依赖 <!--验证码--> <dependency><groupId>com.github.axet</groupId><artifactId>kaptcha</artifactId><version>0.0.9<</version> </dependency>2&#xff…

Kaptcha 使用教程

项目结构&#xff1a; SpringBoot 2.7 Vue2 不想了解的&#xff0c;直接跳转到 快速上手 目录 Kaptcha 是什么&#xff1f; Kaptcha 是一个可高度配置的实用验证码生成工具&#xff0c;可自由配置的选项如&#xff1a; 验证码的字体验证码字体的大小验证码字体的字体颜色验证…