首页 > 编程语言 >使用Python去掉试卷上的蓝色和红色笔记

使用Python去掉试卷上的蓝色和红色笔记

时间:2022-11-21 16:58:21浏览次数:51  
标签:img Python 试卷 cv2 thresh result rm 去掉 red

# -*- encoding: utf-8 -*-
import cv2
import numpy as np


class SealRemove(object):
    """
    印章处理类
    """

    def remove_red_seal(self, image):
        """
        去除红色印章
        """

        # 获得红色通道
        blue_c, green_c, red_c = cv2.split(image)

        # 多传入一个参数cv2.THRESH_OTSU,并且把阈值thresh设为0,算法会找到最优阈值
        thresh, ret = cv2.threshold(red_c, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
        # 实测调整为95%效果好一些
        filter_condition = int(thresh * 0.5)

        _, red_thresh = cv2.threshold(red_c, filter_condition, 255, cv2.THRESH_BINARY)

        # 把图片转回 3 通道
        result_img = np.expand_dims(red_thresh, axis=2)
        result_img = np.concatenate((result_img, result_img, result_img), axis=-1)

        return result_img

    def remove_blue_seal(self, image):
        """
        去除红色印章
        """

        # 获得红色通道
        blue_c, green_c, red_c = cv2.split(image)

        # 多传入一个参数cv2.THRESH_OTSU,并且把阈值thresh设为0,算法会找到最优阈值
        thresh, ret = cv2.threshold(blue_c, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
        # 实测调整为95%效果好一些
        filter_condition = int(thresh * 0.2)

        _, red_thresh = cv2.threshold(blue_c, filter_condition, 255, cv2.THRESH_BINARY)

        # 把图片转回 3 通道
        result_img = np.expand_dims(red_thresh, axis=2)
        result_img = np.concatenate((result_img, result_img, result_img), axis=-1)

        return result_img

    def join_image(self, img_without_red, dst1_without_pen):
            ret = cv2.bitwise_or(img_without_red, dst1_without_pen)
            return ret


if __name__ == '__main__':
    image = r'C:\Users\keying\Desktop\math\2.jpg'
    img = cv2.imread(image)
    seal_rm = SealRemove()
    rm_img1 = seal_rm.remove_red_seal(img)
    rm_img2 = seal_rm.remove_blue_seal(img)
    rm_img = seal_rm.join_image(rm_img1,rm_img2)
    cv2.imwrite(r"C:\Users\keying\Desktop\math\2.new.jpg", rm_img)

  

 

参考:

https://blog.csdn.net/sogobaidu/article/details/115829791

标签:img,Python,试卷,cv2,thresh,result,rm,去掉,red
From: https://www.cnblogs.com/xinzhyu/p/16911886.html

相关文章

  • python-面向对象-类的定义和实例化
    python是一种面向对象编程语言,自然也有类的概念。python中的类通过class关键字定义,提供了面向对象的所有标准特性,例如允许一个类继承多个基类,子类可以覆盖父类的方法,封装......
  • Windows下使用VSCode搭建IDA Python脚本开发环境
    由于本人是VSCode的重度沉迷用户,需要写代码时总会想起这个软件,因此选择在VSCode中搭建IDAPython的开发环境本文适用的环境如下:1.操作系统windows2.Python33.IDAPro......
  • python3 请求webSocket实例
    网上搜了好久,没看到python写的webSocketClient这里贴个示例供大家参考,测过了asyncdefwebSocketClient(self,url,sendData,headers,breakTag):"""......
  • Python3.10 的开发环境的搭建
    安装下载Python3.10或者其他版本:DownloadPython|Python.org如果Windows操作系统下载,默认是下载64位操作系统的exe安装包:python-3.10.0-amd64.exe双击安装......
  • 【Python】字典dict_相同key,不同value的添加方法
     dict.setdefault(key,[]).append(value) #coding:utf-8fromloguruimportloggeraslogsclassdemo:defrun(self):new_dict={}#......
  • jmeter,uuid去掉"-"
    jmeter调试过程,发现消费方流水号启用强校验是32位字符串,有点类似uuid但少了"-"第1想法是BeanShellPreProcessor把uuid去掉-,代码如下:importjava.util.UUID;UUIDuuid1......
  • python-错误和异常-主动抛
    1.抛异常有时,程序需要主动抛出异常,因为某些情况下,你需要反馈消息给更上层的调用者,告诉它有一些异常情况发生,而你抛出异常的地方,没有能力处理它,因此需要向上抛出异常。这......
  • Python常用命令最全合集
    文章目录一、Python环境配置命令二、Python常用命令三、pip管理工具命令四、发布包到pypi(官网)命令Mac电脑自带python2.x版本,终端输入python-V//查看当前......
  • Python面向对象
    背景:为什么要学类1.当我们写了很多用例,我们需要组织用例以及测试执行获取测试报告,需要用到标准库unittest(其实就是一个库里面的类);2.自动化常用的driver.find_ele......
  • Python GDAL/OGR常用样例代码
    目录安装案例矢量转栅格栅格转矢量(多边形)矢量叠加矢量擦除缓冲区分析(以点为例)视域分析安装推荐使用conda安装pythongdal环境,先查询gdal可用版本,再指定版本号,按需安装对......