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

这篇具有很好参考价值的文章主要介绍了【Opencv实战】Python神器 | ps做印章太麻烦?无法拒绝的提取印章神技能,很多人都不知道~(附源码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

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

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

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

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

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

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

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

PS——

注意注意注意:

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

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

刑。

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

政治权利。

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

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

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

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

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

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

钟时间,保证然他下班!

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

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

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

【Opencv实战】Python神器 | 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 np
 
class Seal:
    def __init__(self, img_path):
        """
        初始化图片
        :param img_path: 原始图片路径        """
        self.image = cv2.imread(img_path)
        self.img_shape = self.image.shape
        self.file_name = img_path.split('.')[0].split('\\')[-1]
 
    def unify_img_size(self):
        """
        统一图片的大小
        :return:返回一张未处理的目标图片        """
        img_w = 650 if self.img_shape[1] > 600 else 400
        self.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 impng
 
    def 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 == 255
        print_img = np.zeros(imgpng.shape, np.uint8)
        print_img[:, :, :] = (255, 255, 255, 0)
        print_img[index1] = imgpng[index1]  # (0,0,255)
        return print_img
 
    def 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.shape
        for 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 imgreal
 
    def 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 * h
            ars = [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)效果展示

第一组

原图——

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

效果图——

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

第二组

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

总结

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

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

哈!

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

 🔨推荐往期文章——

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

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

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

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

🎁文章汇总——

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

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

【Opencv实战】Python神器 | ps做印章太麻烦?无法拒绝的提取印章神技能,很多人都不知道~(附源码)文章来源地址https://www.toymoban.com/news/detail-407978.html

到了这里,关于【Opencv实战】Python神器 | ps做印章太麻烦?无法拒绝的提取印章神技能,很多人都不知道~(附源码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 比较稳妥的荣品 rk3399刷机,顺便解决无法进入刷入系统问题以及短接针脚刷机麻烦的问题

       几个月前刚好看到的20块车,只下单了一个后就无了,正巧杂务繁忙,便也无心折腾这板子。过年之际刚好折腾一下,结果网上随便找的教程不是有些许繁琐就是复现不了,折腾了许久才摸索出一套比较可行的方案。 提供百度网盘链接 链接:https://pan.baidu.com/s/1BTWNxDJxkfk

    2024年02月02日
    浏览(120)
  • Python实战之小说下载神器(完结)今天教你如何白拿一款代码版资源丰富的小说下载器GUI界面编程,海量资源免费看~(追书必备神器)

    爱看小伙伴想要一款资源丰富,好用的看小说的软件。 所以为大家做了一款Python版的小程序,这个系列内容已经到尾声了,上一期爬了小说排行榜 的所有小说内容采集,这一期的话终于到最后的阶段啦~ 这一期的代码有点儿多,本来是分为两个内容文章的,想了下阅读量不行

    2024年02月09日
    浏览(65)
  • 无法枚举容器内对象 访问被拒绝

    一、什么是“无法枚举容器中的对象。访问被拒绝”错误? 在Windows设备当中,对文件或文件夹的权限进行设置可以有效地保护隐私内容。因此,管理员账户可以对权限进行更改,并且有权决定是否将内容共享给多个用户使用。但是在某些情况下,当用户账户没有修改内容的

    2024年02月04日
    浏览(41)
  • ps2021神经ai滤镜无法使用,ps2021没法用神经元滤镜

    网上买正版,更新下就好了,盗版的都会有各种这样的问题。ps2021神经AI滤镜是需简要上传云端,由Adobe官方服务器人工智能运算的。 Ps2021版本新增了Ai神经元滤镜,它不是与软件一起安装的,只能在线调用,破解版的ps刚发布不久是可以使用的,后来就不能使用了,目前为止

    2024年02月10日
    浏览(35)
  • 浏览器出现无法访问该页面/无法连接服务器/服务器拒绝连接/XXX已拒绝连接,同时QQ微信可以登录发信息。

    吐槽:新买的华硕天选4,RTX4060配置,不算业内顶配,不至于网上不了吧。。 上干货!!! 有用的话记得点个赞。你的赞数 虽然不会成为我解决问题的动力,但是打开一看它有数字  好看啊! 问题如下: 电脑明明WiFi连上了,QQ微信也都可以登录发信息,就是浏览器上有些网

    2024年02月05日
    浏览(70)
  • Nginx安装启动后无法访问(访问拒绝连接)

    安装解压Nginx后,启动nginx.exe,浏览器访问localhost却访问不到(我们知道Nginx默认端口为80,可以直接localhost访问),访问却显示拒绝访问无法连接。 在cmd窗口中我们来到Nginx解压的根路径输入nginx -t检查nginx配合是否有问题,如下显示ok是没问题的,但是之前报了错误 原因是因

    2024年02月10日
    浏览(43)
  • 无法正确识别车牌(Python、OpenCv、Tesseract)

    我正在尝试识别车牌,但出现了错误,例如错误/未读取字符 以下是每个步骤的可视化: 从颜色阈值+变形关闭获得遮罩 以绿色突出显示的车牌轮廓过滤器 将板轮廓粘贴到空白遮罩上 Tesseract OCR的预期结果 BP 1309 GD 但我得到的结果是 BP 1309 6D 我试着把轮廓切成3片 是的,它是有

    2024年02月13日
    浏览(39)
  • 错误: 无法终止 PID 为 4 的进程。 原因: 拒绝访问

    错误: 无法终止 PID 为 4 /2260的进程。 原因: 拒绝访问 原因:由于在自己的虚拟机上启动了docker镜像,然后在容器启动了nginx,用物理机这面去网页端访问,把80端口占用了, 虽然我在doker上面把nginx停止了,但是windows 这面还是把80端口占用了,然后我想的是把他干掉,使用命

    2024年02月08日
    浏览(64)
  • 文件夹显示无法访问、拒绝访问需要权限的解决方法

        为了简便管理资料,我们都会选择在电脑上建立文件夹来保存不同作用的资料。文件夹显示无法访问、拒绝访问需要权限的解决方法但是当我们遇到某些文件夹打不开无法访问、拒绝访问时该怎么办呢?这里和大家讲一个方法来解决遇到文件夹无法访问、拒绝访问的这种

    2024年02月07日
    浏览(58)
  • win10系统Windows update无法启动,并提示“拒绝访问“

    【问题描述】 在win10系统上安装sqlserver2008r2的时候, 提示需要安装.net3.5,直接在线下载安装失败。 进一步检查Windows update服务的状态为禁用, 并且切换成自动,确定的时候提示”拒绝访问“。 【解决方法】 1、WIN+R键,打开注册表,输入regedit 2、找到HKEY_LOCAL_MACHINESYSTEMCu

    2024年02月11日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包