精华内容
下载资源
问答
  • 面向过程编程,重点在于过程(可以理解成how),即以过程为核心,计算机/写代码的人会把精力聚焦在具体的实现过程上,这个过程第一步干什么,第二步干什么,直到最后完成了...来看张图片:图注:知乎大佬的解释面向对象...

    面向过程编程,重点在于过程(可以理解成how),即以过程为核心,计算机/写代码的人会把精力聚焦在具体的实现过程上,这个过程第一步干什么,第二步干什么,直到最后完成了你的目标。

    面向对象编程,重点在于对象(可以理解成who),即以对象为核心,这个对象有什么技能(不止一个技能的),这个对象所拥有的哪些技能够帮你实现你的目标。

    前者比较关注怎么做,后者比较关注谁来做。

    来看张图片:

    918c6a53606443b4aab878db78b75698.png

    图注:知乎大佬的解释

    面向对象的基本概念

    了解了面向过程和面向对象编程的基本思想以后,我们来介绍面向对象编程中一些基本概念。

    类(Class): 用来描述具有相同的属性和方法的对象的集合。其实类的本意就是类别,表示同类别事物(对象)的一个组合,比如说从事数据分析这个岗位的这些人就是一个类,他们有共同的属性(数据分析师&喜欢用数据说话)和共同的方法/技能(写sql、操作excel、写脚本)。

    4aa0da7ac48e4a02bacffe0e95ec17b1.png

    类属性:就是对类的属性做一些设定,比如名字、特征之类的,上面代码中的name和feature就是类data_analyst的属性。

    类方法:就是类的一些技能,用def来指定,和定义函数有点类似(注意是类似,还是有些不同的,后面讲),也可以理解成类的对象所拥有的技能。

    对象:就是类中的具体一个事物,是关于类而实际存在的一个例子,即实例。比如说众多数据分析师中的小明,就是类data_analyst的一个对象。而小明这个对象具有类data_analyst的所有属性和方法/技能。

    e8897a84647f46f3b514eff4d0825af1.png

    实例化:实例化的过程就是类到对象的过程,实例其实就是创建一个实际例子,类的具体对象。

    __init__:init是初始化的意思,用在实例化的过程中,当对类进行实例化时(创建一个新的实例),类会自动调用该函数。上面只是创建了小明一个实例,我们再来多创建几个其他的数据分析师(怎么感觉有点不对劲),比如小张、小李。

    b772e054bc9c4c5da707c6fa4b82e0a7.png

    self:self是init和def方法中的默认的第一个参数,表明实例本身,可以省略不写。这就是类方法和普通函数的一点不同之处。

    把上面的基本概念总结一下,就是把具有相同属性和方法的对象聚成一个类,然后在这个类里面去声明一些属性、定义一些方法,最后通过实例化创造几个实例/对象,通过实例化创建的对象就可以去引用类中的每个属性和调用类中的每个方法。

    面向对象的编程的好处

    前面我们介绍了面向过程的面向对象的基本思想,也介绍了面向对象中的一些基本概念,接下来我们再看看面向对象有什么特别的优点,只有这样意识到做一件事事情的好处,我们才更愿意走出舒适区(毕竟我们已经习惯了面向过程编程的思维),去接受这个新的东西。通过下面这个实例,我们来看一下编程的几个不同发展阶段。

    已知每个学生各科分数,求取每个学生的总分,平均分。

    8a9a563775a64065b79071a090293e2c.png

    最开始的时候我们是这样做的:

    先求取student_1的分数情况,

    c50c4e1ba36a42d28139cc224cc86bbd.png

    要求student_2和student_3的分数情况,我们可以把student_1的代码复制过来,改一下student就可以。

    822b8eedb075494ca777d2a51f59cbe8.png

    后来大家发现上面的代码有点冗余,不仅看起来难受,更重要的编写耗费时间也很长,又得让程序员gg多加班两小时,所以聪明的(爱偷懒的)技术大牛就发明了函数这种东西,具体执行如下:

    12c3cb65caa443ffb87d02fbb44fe193.png

    再后来,善于琢磨的程序员gg经过不懈的努力,终于又研究出更加简洁的一种方法,那些无数个加班夜总算没有白加,于是乎就有了本章的内容:

    6a7a78c6bee7424daced63469c65aea7.png

    最后

    关于面向对象的知识点还有很多,我们本章节就主要讲这么多,让大家对面向对象有个基本认识,能够日常使用就ok,更加深层次的知识还需要大家自行去探索。

    End.

    作者:张俊红

    展开全文
  • python识别图片文字的三种方法

    千次阅读 2019-01-11 00:43:15
    优点:准确率高 缺点:每次识别都要上传图片,占用网络,速度一般 post(r’http://ocr.shouji.sogou.com/v2/ocr/json’, files=im_files) from requests import post def cs(): filename = 'temp.png' ...

    一:post 搜狗 的方法
    优点:准确率高
    缺点:每次识别都要上传图片,占用网络,速度一般
    post(r’http://ocr.shouji.sogou.com/v2/ocr/json’, files=im_files)
    在这里插入图片描述

    from requests import post
    def cs():
        filename = 'temp.png'
        multiple_files = {'pic': ('1111111.jpg', open(filename, 'rb'), 'image/jpg')}
        resp = post(r'http://ocr.shouji.sogou.com/v2/ocr/json', files=multiple_files)
        str_json = resp.json()
        for i in range(150):
            try:
                print(str_json['result'][i]['content'])
            except:
                pass
    cs()
    

    输出:
    腾讯云-学生专享10

    元优惠套餐

    腾讯云提供多种云产品套餐更

    有实验视频课程开发者实验室(〉

    等在线学习资源


    二:Pillow pytesseract tesseract-ocr
    优点:本地识别图片
    缺点:占用CPU,准确率低

    from PIL import Image
    import pytesseract
    Image = Image.open('temp.png')   # 打开图片
    text = pytesseract.image_to_string(Image,lang='chi_sim')  #使用简体中文解析图片
    print(text)
    

    输出:
    腾讯云-学生专享10
    元优惠套餐

    腾讯云提供多种云产品泰餐更

    有实验视频课程开发者实验室

    等在线学习资源


    三:baiduOCR api
    优点:快
    缺点:收费

    from aip import AipOcr
    def baiduOCR(picfile):
        """
        利用百度api识别文本
        picfile:    图片文件名
        """
        APP_ID = '15393***' # 刚才获取的 ID,下同
        API_KEY = 'ksswjMjlmQDS029brwTu****'
        SECRECT_KEY = 'e1PjsKSIPXHH5G2NFjS8A0nqOT0Y****'
        client = AipOcr(APP_ID, API_KEY, SECRECT_KEY)
    
        i = open(picfile, 'rb')
        img = i.read()
        options = {}
        options["recognize_granularity"] = "big"
        options["language_type"] = "CHN_ENG"
        options["detect_direction"] = "true"
        options["detect_language"] = "true"
        options["vertexes_location"] = "true"
        options["probability"] = "true"
        message = client.basicGeneral(img)   # 通用文字识别,每天 50 000 次免费
        message2 = client.general(img,options)
        print(message,message2)
        #message = client.basicAccurate(img)   # 通用文字高精度识别,每天 800 次免费
        i.close();
    if __name__ == "__main__":
        baiduOCR("temp.png")
    

    输出:
    {‘log_id’: 3308956707916576811, ‘words_result_num’: 5, ‘words_result’: [{‘words’: ‘腾讯云-学生专享10’}, {‘words’: ‘元优惠套餐’}, {‘words’: ‘腾讯云提供多种云产品套餐更’}, {‘words’: ‘有实验视频课程开发者实验室(>’}, {‘words’: ‘等在线学习资源’}]}


    展开全文
  • tkinter的优点是简单易用、与Python的结合度好。tkinter在Python 3.x下默认集成,不需要额外的安装操作;不足之处为缺少合适的可视化界面设计工具,需要通过代码来完成窗口设计和元素布局。 Python tkinter实现图片...
  • 生活或者工作中,不管是写文章、公司 UI 交互图还是广告图等等都需要用到图片图片优点和重要性自不用说。 图片我们可不能随便从网上搜索来用,我们得注意图片的版权。我一般是在无版权的网站上找图片,比如我...

    前言

    本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

    PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

    python免费学习资料、代码以及群交流解答点击即可加入


    生活或者工作中,不管是写文章、公司 UI 交互图还是广告图等等都需要用到图片,图片的优点和重要性自不用说。

    图片我们可不能随便从网上搜索来用,我们得注意图片的版权。我一般是在无版权的网站上找图片,比如我常用的 pixabay 网站,打开网站,搜索我们需要的主题图片,结果,加载大半天,还是下面这样的。。。

     

     

    这大大的影响我们的效率和心情啊,因为这网站的服务器是国外的,所有才会这么慢。

     


    作为一个追求工作和生活高效率的 Pythoner,这个实在忍不了。

     

    于是我用决定用 Python 写一个简单的爬虫,把不同主题的图片分别保存在本地,下次需要用图的时候直接在本地浏览选择就行了。

    页面元素分析

    浏览器中 F12 调试,我们看看单个图片的 url 链接🔗,大部分的图片 url 都在 「data-lazy-srcset」 属性里。

     

    正则提取元素

    我们用正则表达式提取出一个页面所有的图片 url,比如我提取第 2 页所有的图片 url,并把这些 url 放在列表里,方便接下来调用后下载图片。

     

    创建目录

    我们给不同的主题图片主动新建文件夹保存,包括「素材图片」文件夹前面的路径大家换成自己路径,我用的 Mac 电脑路径和 windows 系统路径不同,大家根据情况替换。后面的 direcory 参数是我们输入的查询图片的关键字,根据我们输入的关键字来创建主题文件夹储存下载的图片。

     

    下载图片

    我们把提取出来的图片下载下来,open 后面的 wb+ 表示以二进制读写模式打开。

     

     

    最后,pk 哥用 input 方法让大家自行输入查询的英文关键字,「pagi」后的参数是页面,我用 for 循环让它爬取前 5 页。

     


    运行代码,pk 哥输入英文关键字后回车,效果如下。

    效果展示

    把自己常用的主题图都下载在本地,以后找图再也不用等了,爽歪歪。

     

    展开全文
  • 基于Python的美丽图片屏幕保护

    千次阅读 热门讨论 2021-04-30 23:15:16
    本文结合爬虫,百度搜图,opencv等喜闻乐见的技术,生撸出了一个显示美丽图片的屏幕保护程序,本程序具有以下几个优点: 1.自动显示,解放双手,因为你的双手还有别的用途; 2.每次启动,随机显示,带给你不一样的...

    一般来说,屏幕保护程序能保护屏幕,因为长时间静止的屏幕画面会让电子束持续打击屏幕的固定位置,长期如此会伤害CRT显示器荧光粉;而美丽的屏幕保护程序则能保护眼睛,因为长时间枯燥乏味的屏幕内容会使人眼产生疲劳,长期如此会伤害猿类的大脑神经。本文结合爬虫,百度搜图,opencv等喜闻乐见的技术,生撸出了一个显示美丽图片的屏幕保护程序,本程序具有以下几个优点:

    1.自动显示,解放双手,因为你的双手还要撸代码;

    2.每次启动,随机显示,带给你不一样的视觉体验;

    3.全屏显示,Esc退出,在现实和幻想中自由切换;

    没时间解释了,马上开车!!!


    import os
    import cv2
    import threading
    import time
    import requests
    import json
    import random
    from win32api import GetSystemMetrics
    
    WAIT = 200
    
    
    def fill_blank(img_in, img_w, img_h, pic_w, pic_h):
        resize_img1 = cv2.resize(img_in, (img_w, img_h))
        if img_w % 2 != 0 and img_h % 2 == 0:
            top, bottom, left, right = (pic_h - img_h) / 2, (pic_h - img_h) / 2, (pic_w - img_w) / 2 + 1, (pic_w - img_w) / 2
        elif img_h % 2 != 0 and img_w % 2 == 0:
            top, bottom, left, right = (pic_h - img_h) / 2 + 1, (pic_h - img_h) / 2, (pic_w - img_w) / 2, (pic_w - img_w) / 2
        elif img_h % 2 == 0 and img_w % 2 == 0:
            top, bottom, left, right = (pic_h - img_h) / 2, (pic_h - img_h) / 2, (pic_w - img_w) / 2, (pic_w - img_w) / 2
        else:
            top, bottom, left, right = (pic_h - img_h) / 2 + 1, (pic_h - img_h) / 2, (pic_w - img_w) / 2 + 1, (pic_w - img_w) / 2
        return cv2.copyMakeBorder(resize_img1, int(top), int(bottom), int(left), int(right), cv2.BORDER_CONSTANT, value=[0, 0, 0])
    
    
    def resize_img(img, pic_w, pic_h):
        h, w = img.shape[0], img.shape[1]
    
        if h == w:
            longest = h
            scale = longest / float(pic_h)
            img_h, img_w = int(h / scale), int(w / scale)
            return fill_blank(img, img_w, img_h, pic_w, pic_h)
        elif w > h:
            longest = w
            scale = longest / float(pic_w)
            img_h, img_w = int(h / scale), int(w / scale)
            if img_h > pic_h:
                longest1 = h
                scale1 = longest1 / float(pic_h)
                img_h_1, img_w_1 = int(h / scale1), int(w / scale1)
                return fill_blank(img, img_w_1, img_h_1, pic_w, pic_h)
            else:
                return fill_blank(img, img_w, img_h, pic_w, pic_h)
        elif h > w:
            longest = h
            scale = longest / float(pic_h)
            img_h, img_w = int(h / scale), int(w / scale)
            if img_w > pic_w:
                longest1 = w
                scale1 = longest1 / float(pic_w)
                img_h_1, img_w_1 = int(h / scale1), int(w / scale1)
                return fill_blank(img, img_w_1, img_h_1, pic_w, pic_h)
            else:
                return fill_blank(img, img_w, img_h, pic_w, pic_h)
    
    
    def image_change(image_path):
        imgshow = True
        url_valid = False
        window_name = 'ppp'
        cv2.namedWindow(window_name, cv2.WND_PROP_FULLSCREEN)
        cv2.setWindowProperty(window_name, cv2.WND_PROP_FULLSCREEN,
                              cv2.WINDOW_FULLSCREEN)
        cv2.moveWindow(window_name, 0, 0)
        screen_w, screen_h = GetSystemMetrics(0),GetSystemMetrics(1)
    
        image_page = random.randint(0,1000)
        image_curAlbum = 1
        image_index = 0
        file_0 = image_path + '0'
        file_1 = image_path + '1'
        base_url = 'https://graph.baidu.com/view/similar?' \
                   'srcp=crs_simialbum' \
                   '&tn=wise' \
                   '&idctag=tc' \
                   '&sids=10005_10801_10914_10913_11006_10922_10905_10016_10901_10941_10907_11012_10956_10970_10968_10974_11031_11120_12202_13203_16202_17008_17023_17025_16104_17105_17114_17851_17863_17071' \
                   '&logid=292853505' \
                   '&promotion_name=aladdin_38009' \
                   '&carousel=10' \
                   '&page={page}' \
                   '&curAlbum={curAlbum}' \
                   '&seed_id=327081865' \
                   '&sign=121b2c0e81707fee99a8b01607159121' \
                   '&index=0'
        if os.path.exists(file_0):
            os.remove(file_0)
        if os.path.exists(file_1):
            os.remove(file_1)
        while True:
            url = base_url.format(page=image_page, curAlbum=image_curAlbum)
            print(url)
            res = requests.get(url)
            res.encoding = 'utf-8'
            tplData_start = res.text.find('window.tplData')
            if tplData_start != -1:
                tplData_end = res.text.find(';', tplData_start)
                if tplData_end != -1:
                    tplData = res.text[tplData_start : tplData_end].split('=', 1)[1]
                    # print(tplData)
                    tpldata = json.loads(tplData)
                    # print(tpldata)
                    if 'albumList' in tpldata.keys():
                        url_valid = True
                        albumList = tpldata['albumList']
                        for album in albumList:
                            imgList = album['imgList']
                            for img in imgList:
                                imgSrc = img['imgSrc']
                                img_filename_start = imgSrc.rfind('/')
                                img_filename_end = imgSrc.rfind('@')
                                img_filename = imgSrc[img_filename_start:img_filename_end]
                                imgdata = requests.get(imgSrc, stream=True)
                                print(img_filename)
                                open(image_path + str(image_index), 'wb').write(imgdata.content)
                                image_index = 1 - image_index
                                del imgdata
    
                                if os.path.exists(file_0) and os.path.exists(file_1):
                                    img1 = cv2.imread(image_path + str(image_index))
                                    img2 = cv2.imread(image_path + str(1 - image_index))
                                    #src1 = resize_img(img1, 420, 640)
                                    #src2 = resize_img(img2, 420, 640)
                                    src1 = resize_img(img1, screen_w, screen_h)
                                    src2 = resize_img(img2, screen_w, screen_h)
                                    for it in range(WAIT + 1):
                                        if it % 10 == 0:
                                            weight = it / WAIT
                                            res = cv2.addWeighted(src1, 1 - weight, src2, weight, 0)
                                            cv2.imshow(window_name, res)
                                            cv2.waitKey(10)
                                elif os.path.exists(file_0):
                                    img1 = cv2.imread(file_0)
                                    #src1 = cv2.resize(img1, (420, 640))
                                    src1 = cv2.resize(img1, (screen_w, screen_h))
                                    cv2.imshow(window_name, src1)
                                k = cv2.waitKey(8000)
                                if k == 27:
                                    cv2.destroyAllWindows()
                                    return
    
            image_page = image_page + 1
            # break
    
    
    image_change('photo\\')
    

     

    展开全文
  • 生活或者工作中, 不管是写文章、公司 UI 交互图还是广告图等等都需要用到图片图片优点和重要性自不用说。 图片我们可不能随便从网上搜索来用,我们得注意图片的版权。我一般是在无版权的网站上找图片,比如我...
  • 生活或者工作中,不管是写文章、公司 UI 交互图还是广告图等等都需要用到图片图片优点和重要性自不用说。 图片我们可不能随便从网上搜索来用,我们得注意图片的版权。我一般是在无版权的网站上找图片,比如我...
  • TinyPNG 是一个在线压缩工具,主要优点是在视觉上没有明显变化的情况下达到很高的压缩比(如我手机截屏图片大小一般为110k,压缩后能达到30k左右)。 TinyPNG官网: TinyPNG支持一次最多上传20张图片图片最大5M。 ...
  • Python语言显示图片的倒影效果

    千次阅读 2012-11-20 13:21:46
    Python脚本语言的优点很多,它易学易用,开源免费,可移植性高,内建丰富的数据结构,库涵盖面广,无需编译可直接运行。 Python脚本语言的用途非常广,单就工程师而言,利用它可以方便的制作开发用的工具,快速演练
  • 文章目录Python实现多线程Python的前后台线程线程等待多线程与资源多线程爬取中国天气网的图片数据 Python实现多线程 线程类似于同时执行多个不同的程序,多线程运行的优点: 1.使用线程可以把占据长时间的程序中的...
  • Python 爬虫多线程实现下载图片 本篇文章可能跟上一篇有点像 只是换了个页面 然后搞定他的ajax 通过直接访问ajax的接口来实现图片的下载 因为再源代码中已经没有办法显示他的url链接了 这样的访问也称为异步访问 ...
  • 生活或者工作中,不管是写文章、公司 UI 交互图还是广告图等等都需要用到图片图片优点和重要性自不用说。 图片我们可不能随便从网上搜索来用,我们得注意图片的版权。我一般是在无版权的网站上找图片,比如我...
  • 五:图像指纹 ...优点: 1:算法简单计算速度快 2:图像放大,缩小,改变纵横比,或增加,减少亮度,对比度,颜色对hash影响不大 缺点: 对图片内容敏感,如果内容改变,图片hash改变比较大 ...
  • python爬虫下载图片1.网页分析2.代码1.初始准备2.生成页面地址3.得到图片下载链接4.下载图片5.main函数 1.网页分析 今天要爬取的网址:https://unsplash.com/,这个网站的图片据我观察还是非常精致的。 经过分析发现...
  •  Python使用解释型语言,因此非常适合快速学习,同时Python具有结构松散,外部可用模块较多的优点,使用Python学习Opencv对于初学者来说非常适合。 1、如何安装opencv  根据Python版本号,选择下载opencv,...
  • 动态图片,这也是比纸质文章的好的一个优点。 不过csdn的图片不要大于5M的,要注意一下,以后学习一下怎么优化图片体积可以用上。现在只 是做长一下时间间隔和减小截屏的面积。 效果如下: 以下是代码: ...
  • -Django admin的直接替代品有很多优点。 -Flask的简单且可扩展的管理界面框架。 -芹菜的实时监控器和Web管理员。 -Django Admin-Interface的爵士外观。 一个Django应用,可为Python脚本创建自动的Web UI。 算法...
  • Python基础

    2021-01-27 14:53:22
    以上便是python的代码,这种语法形式的优点是看起来整洁、美观,没有大量的括号,更便于阅读,看起来更像人类的自然语言。通常我们使用Tab键或者四个空格来完成缩进,坏处是复制粘贴代码后,代码的缩进会不一样,这...
  • 核心算法: 一、分别自定义三种计算图片相似度算法 1)计算图片相似度算法ORB...参考【python 图像相似度】OpenCV图像相似度ORB算法--相似图像去重 https://blog.csdn.net/u013421629/article/details/87364489 2
  • python爬图

    2015-08-14 16:47:00
    闲的无事,看着知乎里种种python优点,按捺不住,装起python3.4。 网上找了点爬行图片的代码,修改至兼容3.4,成功爬行指定url所有jpg图片,代码段如下: import os import urllib import urllib.request ...
  • 图片验证码识别使用向量空间搜索引擎来做字符识别优点缺点文件目录结构完整代码:结论 使用向量空间搜索引擎来做字符识别 每个字符图片作为一个向量,计算向量之间的夹角余弦,越大相似性越高。 Created with ...
  • python 优点 容易阅读,理解,编写。 python应用 数据分析,爬虫(搜集数据),办公自动化,人工智能,Web开发,机器学习。 案例: 人脸识别:将视频中的人脸替换成其他图像。 人工智能:将图片风格进行替换。 数据...
  • 它的主要优点是: 压缩比高。 对于类似的质量,文件比JPEG小得多。 大多数Web浏览器都支持小型Javascript解码器(gzip压缩大小:56 KB)。 基于HEVC开放视频压缩标准的子集。 支持与JPEG(灰度,YCbCr 4:2:0,4:...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 129
精华内容 51
关键字:

python优点图片

python 订阅