• opencv


    pip install opencv-contrib-python 需要安装此环境

    import cv2
    qq = cv2.imread('qq.jpg')

    1 缩放图片
    qq = cv2.resize(qq,None,fx=0.5,fy=0.5)


    2 边缘识别
    canny = cv2.Canny(qq,50,240)
    参数一:原始图片数组
    参数二:阈值1
    参数三:阈值2

    import cv2
    qq = cv2.imread('qq.jpg')
    print(qq.shape)
    qq =cv2.resize(qq,None,fx=0.5,fy=0.5)
    canny = cv2.Canny(qq,40,40)
    cv2.imshow('1',canny)
    cv2.waitKey()
    View Code


    3 直方图均衡化

    equalized_gray = cv2.equalizeHist(gray)
    参数一:图片数组
    暗变亮

    # python 3.7
    import cv2
    qq = cv2.imread('qq.jpg')
    print(qq.shape)
    qq =cv2.resize(qq,None,fx=0.5,fy=0.5)
    cv2.imshow('1.',qq)
    # canny = cv2.Canny(qq,40,40)
    gray = cv2.cvtColor(qq,cv2.COLOR_RGB2GRAY)
    cv2.imshow('2',gray)
    equalized_gray = cv2.equalizeHist(gray)
    cv2.imshow('1',equalized_gray)
    yuv = cv2.cvtColor(qq,cv2.COLOR_BGR2YUV)
    cv2.imshow('5',yuv)
    yuv[...,0]=cv2.equalizeHist(yuv[...,0])
    equalizd_color = cv2.cvtColor(yuv,cv2.COLOR_YUV2BGR)
    cv2.imshow('4',equalizd_color)
    cv2.waitKey()
    View Code

    4 结构特征

    # python 3.7
    import cv2
    qq = cv2.imread('qq.jpg')
    print(qq.shape)
    qq =cv2.resize(qq,None,fx=0.5,fy=0.5)
    cv2.imshow('1.',qq)
    # canny = cv2.Canny(qq,40,40)
    gray = cv2.cvtColor(qq,cv2.COLOR_RGB2GRAY)
    cv2.imshow('1',gray)
    # 创建STAR特征点检测器
    star  =cv2.xfeatures2d.StarDetector_create()
    keypoints = star.detect(gray)
    mixture = qq.copy()
    
    # 特征点和原始图像的结合
    cv2.drawKeypoints(qq,keypoints,mixture,flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS )
    cv2.imshow('mixshow',mixture)
    cv2.waitKey()
    View Code

    5 图像的特征描述矩阵

      图像的特征描述矩阵来源于反映图像中物体的结构特征关键点的空间直方图。

    6 基于特征描述矩阵的图像物体识别

    from PIL import Image,ImageFont,ImageDraw
    import numpy as np
    from pylab import *
    import cv2
    import random
    
    def get_for():
        a='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
        a_list=[x for x in a]
        _ = random.choice(a_list)
        return _
    
    def get_co():
        while True:
            a='abcdef0123456789'
            a_list=[x for x in a]
            _ = [random.choice(a_list) for i in range(6)]
            if _ == 'ffffff' or _ =='#9c9c9c':
                continue
            break
        return '#%s'%''.join(_)
    
    def get_num():
        a= [x for x in range(10)]
        b= [-x for x in range(1,10)]
        b.extend(a)
        return b
    
    font = ImageFont.truetype('CHILLER.TTF',40)#使用自定义的字体,第二个参数表示字符大小
    im = Image.new("RGB",(100,50),'#ffffff')#生成空白图像
    draw = ImageDraw.Draw(im)#绘图句柄
    x,y=(0,0)#初始左上角的坐标
    for i in range(4):
        x=x+10+abs(random.choice(get_num()))
        y = 0+random.choice(get_num())
        if y == 0:
            y+=10
        c = get_for()
        c1 = get_co()
        draw.text((x,y), c, font=font,fill=c1)#绘图
    offsetx,offsety=font.getoffset('abc')#获得文字的offset位置
    width,height=font.getsize('abc')#获得文件的大小
    # im.show()
    im=np.array(im)
    
    #cv2.rectangle(im,(offsetx+x,offsety+y),(offsetx+x+width,offsety+y+height),(0,0,0),1)#绘出矩形框
    #Image._show(im)
    cv2.imshow('11',im)
    cv2.waitKey(0)
    View Code---验证码
  • 相关阅读:
    白话OAuth2用户认证及鉴权标准流程
    QQ登录功能之如何获取用于本地测试的APPID
    Spring Security框架下实现两周内自动登录"记住我"功能
    Spring Security之多次登录失败后账户锁定功能的实现
    结合RBAC模型讲解权限管理系统需求及表结构创建
    将Swagger2文档导出为HTML或markdown等格式离线阅读
    结合参数接收响应转换原理讲解SpringBoot常用注解
    详解Spring Security的formLogin登录认证模式
    java应用性能调优之详解System的gc垃圾回收方法
    参与国际化项目需遵循的java命名规范
  • 原文地址:https://www.cnblogs.com/Skyda/p/10156782.html
Copyright © 2020-2023  润新知