zoukankan      html  css  js  c++  java
  • 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---验证码
  • 相关阅读:
    Comparable内部比较器 和 Comparator外部比较器
    java——包装类数据缓存 ==号详解
    java——包装类中的equals方法
    Eclipse怎么改变@author 姓名
    非常简约学生管理系统——HashSet进行编写
    TreeMap——实现comparable接口并重写CompareTo方法
    flume收集日志直接sink到oracle数据库
    大文件多个服务器复制拷贝
    oracle创建用户表空间
    缓存策略:redis缓存之springCache
  • 原文地址:https://www.cnblogs.com/Skyda/p/10156782.html
Copyright © 2011-2022 走看看