• 博客(1677)
  • 资源 (2)
  • 收藏
  • 关注

原创 【计算机视觉】OpenCV 4高级编程与项目实战(Python版)【2】:操作像素

像素是构成图像的基本单位。现在看图1所示的花卉图像,这幅图看着很细腻,不过将图像的白框区域放大,会看到如图2所示的效果,细腻的图像不见了,取而代之的是一个一个的小方块,每一个小方块就是一个像素。如果从显示器的角度,像素就是显示器可以显示的最小的点。像素之所以在图2所示的图中看着像一个方块,是因为如果将图像的某个区域放大,就需要将一个像素变成多个像素,这就会造成多个相邻的像素的颜色都相同,所以看着这些像素就变成了一个个小方块。

2023-01-05 19:55:10 1133 3

原创 神奇的Python property装饰器:1行代码让Python方法秒变属性

本文详细介绍了如何用property装饰器的将Python方法变成属性,以及再变成可写和可删除的属性,当然,更重要的是详细分析了property装饰器的原理,让读者不仅可以知其然,还可以知其所以然。

2021-04-16 08:47:52 3394 14

原创 【鸿蒙学院】鸿蒙(HarmonyOS)IDE迎来重大更新,新特性足以让你尖叫!

本文主要深入介绍鸿蒙IDE与编程有关的3个特性:双向预览、Java UI数据模拟和测试框架,至于其他的一些新特性,如更多的phone模板,API version的变化,可视化配置config.json等,可以参考文中的视频。

2021-04-01 16:56:13 39874 18

原创 【物联网】老程序教你一招,10行代码让超声波模块秒变声控开关

超声波只能用来测距吗?你out了,看哥教你如何只用10行代码将超声波模块改装成声控开关,perfect!

2021-03-31 08:51:59 7027 7

原创 Python编程思想【系列文章】

李宁老师已经在「极客起源」 微信公众号推出《Python编程思想》电子书,囊括了Python的核心技术,以及Python的主要函数库的使用方法。读者可以在「极客起源」 公众号中输入160442开始学习,或点击「极客起源」公众号下方的「编程思想」>「Python编程思想」

2020-05-20 08:13:10 5205 1

原创 告诉你个秘密,Python也能控制回收站

本文选自。本文介绍了如何用Python控制回收站(macOS成为废纸篓),主要内容包括删除回收站中的文件、清空回收站中的文件和恢复回收站中的文件。由于Windows、macOS和Linux操作回收站的API和方式不同,所以本节会分别介绍这3种操作系统操作回收站的API和背后的原理,并通过相应的API将这3个操作系统平台用于操作回收站的API放到一个Python脚本文件中,所以本文提供的Python代码都是跨平台的。

2024-07-13 15:43:30 941

原创 ChatGPT终于被我问到胡说八道的程度了!

问:Python是强类型语言,还是弱类型语言chatgpt:Python是强类型语言。Python很少会隐式地转换变量的类型,所以Python是强类型的语言

2023-05-04 09:44:28 6679 2

原创 【计算机视觉】OpenCV 4高级编程与项目实战(Python版)【9】:计算图像均值和标准差

图像的均值表示图像整体的亮暗程度,图像的均值越大,图像整体越亮。标准差表示图像中明暗变化的程度,标准差越大,表示图像中明暗变化越明显。OpenCV提供了mean函数用于计算图像的均值,提供了meanStdDev函数用于同时计算图像的均值和标准差。

2023-03-15 21:10:02 1311

原创 【计算机视觉】OpenCV 4高级编程与项目实战(Python版)【8】:图像像素统计

图像通过一定尺寸的矩阵表示,矩阵中每个元素的大小表示图像中每个像素的明暗程度。查找矩阵中的最大值就是寻找图像中灰度值最大的像素,计算矩阵的平均值就是计算图像像素的平均灰度,可以用平均灰度表示图像整体的亮暗程度。因此,针对图像矩阵数据的统计和分析,在图像处理工作中具有非常重要的意义。OpenCV集成了求取图像像素最大值、最小值、均值、标准差等函数,本节将详细介绍这些函数的使用方法。

2023-03-13 20:27:10 790

原创 【计算机视觉】OpenCV 4高级编程与项目实战(Python版)【7】:拼接图像

我们已经知道,图像是通过数组描述的,那么拼接图像其实就是拼接数组。NumPy提供了2个拼接数组的函数,分别是hstack函数和vstack函数,这两个拼接函数可以将两个数组水平和垂直拼接在一起,也就相当于将两幅图像水平和垂直拼接在一起,本节将详细讲解如何使用这两个函数水平拼接图像和垂直拼接图像。

2023-03-01 21:01:42 942

原创 【计算机视觉】OpenCV 4高级编程与项目实战(Python版)【6】:使用NumPy创建随机雪花点图像

上一篇文章演示了如何使用二维数组创建黑白图像,如果要创建彩色图像,就需要使用三维数组。例如,在BGR色彩空间创建200 × 200的彩色图像,就需要一个200 ×200 ×3的三维数组存储像素的颜色值,其中第3维可以存储3个通道的颜色值,分别是B通道、G通道和R通道。也就是我们平常说的三原色:蓝(B)、绿(G)和红(R)。

2023-02-27 21:20:45 633

原创 解决百度网盘出现“正在请求中...”的问题,绝对好使!

最近百度网盘客户端总出现“正在请求中...",尽管充的SVIP,还是这样,经过摸索,重要找到原因了,对于macOS版本百度网盘客户端,请按下面方式操作,windows版也类似。

2023-02-25 10:24:43 3448

原创 【计算机视觉】OpenCV 4高级编程与项目实战(Python版)【5】:使用NumPy创建黑白同心圆图像

OpenCV中使用数组表示图像数据,不过这里的数组并不是Python数组,而是NumPy数组。NumPy是非常著名的科学计算库,可用于进行各种科学计算,由于底层使用C语言实现,所以效率非常高。本文会利用NumPy和OpenCV绘制黑白图像,包括黑白同心圆。

2023-02-15 21:44:23 932

原创 【计算机视觉】OpenCV 4高级编程与项目实战(Python版)【4】:通道详解

相信很多读者朋友对“通道”这个词已经不陌生了,一副BGR图像是由3个通道组成的,这3个通道是B通道、G通道和R通道。本节将介绍如何对通道进行拆分与合并,并达到处理图像的目的。

2023-01-27 21:23:30 1393 1

原创 【计算机视觉】OpenCV 4高级编程与项目实战(Python版)【3】:色彩空间

在上一篇文章中,简单介绍了BGR色彩空间和RGB色彩空间,本文将介绍另外两个比较常见的色彩空间:GRAY色彩空间和HSV色彩空间。GRAY色彩空间通道指的是灰度图像,灰度图像的通常只有1个,值范围是[0, 255],一共256个灰度级别。其中0表示纯黑色,255表示纯白色。0~255之间的数值表示不同的亮度(即色彩的深浅程度)的深灰色或浅灰色。因此,一副灰度图能展示丰富的细节信息

2023-01-09 21:55:31 2127 2

原创 【计算机视觉】OpenCV 4高级编程与项目实战(Python版)【1】:图像处理基础

本系列文章会深入讲解OpenCV 4(Python版)的核心技术,并提供了大量的实战案例。这是本系列文章的第一篇,主要讲解OpenCV处理图像的基本方法,主要包括读取图像、显示图像、保存图像和获取图像的属性。

2023-01-02 22:09:18 2071

原创 鸿蒙开发套件全面升级,助力鸿蒙生态蓬勃发展

2022年华为开发者大会(HDC.Together)于11月4日在东莞松山湖揭开帷幕,带来了鸿蒙生态的最新成果,展示了鸿蒙生态的全新格局。在大会主题演讲中,华为带来了多种令人震撼的技术成果,如分布式能力、原子化服务、AI、AR、地图、游戏、音视频、隐私安全、HarmonyOS座舱等。同时鸿蒙开发套件推出了升级的ArkTS、ArkUI、ArkCompiler等技术,通过这些技术的加持,让HarmonyOS App从开发、到布局,再到性能,都得到了质的飞跃。从而全面加速推进HarmonyOS应用生态。

2022-11-11 13:23:14 7151

原创 史上最全的Go语言模块(Module)管理详解(基于Go1.19)

本文主要介绍了Go语言的两种模块管理机制:go modules和Go工作区。其中Go工作区模式为了解决诟病已久的go modules路径问题,从Go1.18开始引入的。使用最新版本Go的同学推荐使用Go工作区模式管理Go模块,这将为你带来更好的模块管理体验。除此之外,本文还介绍了在VSCode中如何使用Go工作区模式管理Go模块,以及如何排除Go Language Server启动时产生的错误。

2022-09-13 09:42:32 4987 1

原创 Python爬虫编程思想(162): 综合爬虫项目:可视化爬虫

到现在为止,我们已经学习了相当多的爬虫知识,包括各种网络库、分析库、多线程爬虫、基于Selenium和Appium的爬虫,以及Scrapy爬虫框架。在前面的章节中也提供了大量的爬虫项目,不过这些爬虫应用都有一个共同点,都是控制台程序,需要直接在命令行中运行。但对于大型的爬虫项目,如果没有GUI接口,控制起来是很费劲的。...

2022-08-14 20:40:14 1636 2

原创 Python爬虫编程思想(161):Scrapy中的通用爬虫

我们已经讲解的爬虫都是抓取一个或几个页面,然后分析页面中的内容,这种爬虫可以称为专用爬虫,通常是用来抓取特定页面中感兴趣的内容,例如,某个城市的天气预报信息,或特定商品的信息等。除了专业爬虫外,还有一类爬虫应用非常广泛,这就是通用爬虫。...

2022-08-14 20:12:59 903

原创 Python爬虫编程思想(159):Scrapy中的爬虫中间件

爬虫中间件(Spider Middleware)是Spider处理机制的构造框架,我们首先来看一下爬虫中间件的架构。当爬虫向服务端发送请求之前,会经过爬虫中间件处理。下载器(Downloader)生成 Response之后,Response会被发送给 Spider,在发送给 Spider之前,Response会首先经过爬虫中间件处理,当Spider处理生成Item后,也会经过爬虫中间件处理。所以爬虫中间件会在如下3个位置起作用。...

2022-08-14 19:42:48 1236

原创 Python爬虫编程思想(158):Scrapy中的下载器中间件

Scrapy允许使用中间件干预数据的抓取过程,以及完成其他数据处理工作。其中一类非常重要的中间件就是下载器中间件。下载器中间件可以对数据的下载和处理过程进行拦截。在Scrapy爬虫中,数据下载和处理分下面两步完成。...

2022-08-14 19:29:11 875

原创 Python爬虫编程思想(157):使用Scrapy从CSV格式转换到JSON格式

通过scrapy框架编写的爬虫很容易进行格式转换,本节将利用爬虫将CSV格式的文件转换为JSON格式的文件。转换的基本原理是将CSV格式的文件作为数据源来读取,然后在parse方法中将CSV文件中的数据通过Item转换为指定的格式,如JSON格式。...

2022-08-14 19:20:41 641

原创 Python爬虫编程思想(156):使用Scrapy抓取天气预报数据

并不是所有的数据都在网页代码中,对于通过AJAX方式更新数据的Web页面,通常会使用Web API的方式从服务端获取数据,然后通过JavaScript代码将这些数据显示在Web页面的组件中。在这种情况下,无法通过抓取HTML代码的方式获取这些数据,而要通过直接访问这些Web API的方式从服务端抓取数据。...

2022-08-14 19:10:51 1128

原创 Python爬虫编程思想(155):使用Scrapy处理带隐藏文本框的登录页面

在这个例子中假设服务端程序除了要求输入用户名和密码,没有做任何限制。但在实际应用中,服务端程序可能会加各种其他的校验

2022-08-14 18:42:23 637

原创 Python爬虫编程思想(154):使用Scrapy处理登录页面

在抓取Web页面数据时,并不是每一个页面的数据在任何时候都可以抓取到。有一些页面,需要用户登录后才可以在浏览器中显示,如果想通过爬虫抓取这样的页面,同样也需要登录。也就是说,这种页面只有特定的用户才能访问。...

2022-08-14 18:32:58 878

原创 见鬼,U盘空间怎么少了,原来是EFI分区搞的鬼,删除它

通常,您无法在文件资源管理器中查看EFI分区,因为EFI分区没有驱动器号。如果意外删除此分区,则会导致已安装的系统无法启动。因此,为了保护此分区,Windows不允许您轻松删除它。然而,有些人想要删除EFI分区,或者EFI分区被建立在U盘上,现在要格式化整个U盘,由于EFI分区无法轻易删除,所以也就无法轻易格式化整个U盘,所以本文给出一个解决方案,允许在Windows中(Windows10或Windows11)删除EFI分区,这样就可以利用整个U盘了。...

2022-07-15 12:19:37 4314

原创 Python爬虫编程思想(153):使用Scrapy抓取数据,抓取多个Url

在前面的案例中都是只抓取了一个Url对应的页面,但在实际应用中,通常需要抓取多个Url,在爬虫类的start_urls变量中添加多个Url,运行爬虫时就会抓取start_urls变量中所有的Url。下面的代码在start_urls变量中添加了2个Url,运行MultiUrlSpider爬虫后,就会抓取这两个Url对应的页面。...

2022-06-28 17:34:24 2376

原创 Python爬虫编程思想(152):使用Scrapy抓取数据,使用ItemLoader保存多条抓取的数据

在上一篇文章中通过ItemLoader保存了一条抓取的数据,如果要保存多条或所有抓取的数据,就需要parse方法返回一个MyscrapyItem数组。

2022-06-28 17:30:49 1153

原创 Python爬虫编程思想(151):使用Scrapy抓取数据,用ItemLoader保存单条抓取的数据

在前面的文字中通过parse方法返回一个MyscrapyItem对象的方式将抓取的数据保存到指定的文件中,本文会介绍另外一种保存数据的方式:ItemLoader。

2022-06-25 22:06:05 1058

原创 Python爬虫编程思想(150):使用Scrapy抓取数据,并将抓取到的数据保存为多种格式的文件

parse方法的返回值会被传给Item Pipeline,并由相应的Item Pipeline将数据保存成相应格式的文件。parse方法必须返回Item类型的数据。也就是说,parse方法的返回值类型必须是scrapy.Item或其scrapy.Item的子类。在该类中会定义与要保存的数据对应的属性。...

2022-06-12 21:54:57 1386

原创 Python爬虫编程思想(149):使用Scrapy抓取数据,并通过XPath指定解析规则

本文的案例会在parse方法中通过response参数设置XPath,然后从HTML代码中过滤出我们感兴趣的信息,最后将这些信息输出到PyCharm的Console中。

2022-06-12 21:51:12 1435

原创 Python爬虫编程思想(148):在PyCharm中使用扩展工具运行Scrapy程序

在上一篇文章中编写了一个execute.py文件用于运行Scrapy程序。其实本质上也是执行scrapy命令来运行Scrapy程序。不过每创建一个Scrapy工程,都要编写一个execute.py文件放到PyCharm工程中用于运行Scrapy程序显得很麻烦,为了在PyCharm中更方便地运行Scrapy程序,可以使用PyCharm扩展工具通过scrapy命令运行Scrapy程序。

2022-06-02 15:57:08 1572 1

原创 Python爬虫编程思想(147):在PyCharm中使用Scrapy

前面的例子是通过文本编辑器编写的,但在实际的开发中不可能用文本编辑器编写整个网络爬虫,所以需要选择一个IDE。我推荐目前最流行的PyCharm作为Python IDE。

2022-05-26 22:26:42 1764

原创 Python爬虫编程思想(146):创建和使用Scrapy工程

Scrapy框架提供了一个scrapy命令用来建立Scrapy工程,可以使用下面的命令建立一个名为myscrapy是Scrapy工程。

2022-05-15 08:56:45 1613

原创 Python爬虫编程思想(145):使用Scrapy Shell抓取Web资源

Scrapy提供了一个Shell,相当于Python的REPL环境,我们可以用这个Scrapy Shell测试Scrapy代码。

2022-05-10 18:34:32 1759

原创 Python爬虫编程思想(144):爬虫框架Scrapy的基础知识

Scrapy是一个非常优秀的爬虫框架,通过Scrapy框架,可以非常轻松地实现强大的爬虫系统,程序员只需要将精力放在抓取规则以及如何处理抓取的数据上,至于一些外围的工作,例如,抓取页面,保存数据、任务调度、分布式等,直接交给Scrapy就可以了。

2022-05-09 22:28:02 1692

原创 Python爬虫编程思想(143):项目实战:多线程和多进程爬虫

本文演示了如何通过多线程和单线程实现同一个爬虫。

2022-05-09 22:21:12 1678

原创 Python爬虫编程思想(142):多线程和多进程爬虫--多进程

尽管多线程可以实现并发执行,不过多个线程之间是共享当前进程的内存的,也就是说,线程可以申请到的资源有限。要想更能发挥并发的作用,可以考虑使用多进程。

2022-03-31 19:41:00 2422

原创 Python爬虫编程思想(141):多线程和多进程爬虫--生产者-消费者问题与queue模块

本文使用线程锁以及队列来模拟一个典型的案例:生成者-消费者模型。在这个场景下,商品或服务的生产者生成商品,然后将其放到类似队列的数据结构中,生产商品的时间是不确定的,同样消费者消费生产者生产的商品的时间也是不确定的。

2022-03-31 19:36:46 4232

深度解析Java中的5个“黑魔法”完整源代码

深度解析Java中的5个“黑魔法”完整源代码,包含注释的有趣应用、可执行的注释、枚举实现接口、初始化的多种方式等。

2020-04-16

GWT.in.Practice

介绍GWT API的英文版的电子书, Asynchronous JavaScript and XML (Ajax) development is hard. Not ascending- Everest hard, maybe not even calculating-your-taxes hard, but hard. This is true for a number of reasons: JavaScript can require a lot of specialized knowledge and discipline, browsers have slightly different implementations and feature sets, tooling is still immature, and debugging in multiple environments is problematic. All of these factors add up to developers needing a vast knowledge of browser oddities and tricks to build and manage large Ajax projects.

2008-12-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除