Pillow图像几何变换
Pillow图像几何变换图像的几何变换主要包括图像翻转、图像旋转和图像变换操作,Image 类提供了处理这些操作的函数 transpose()、rotate() 和 transform(),下面分别对它们进行讲解。
transpose图像翻转transpose()翻转操作该函数可以实现图像的垂直、水平翻转
返回一个新的Image对象
语法格式如下:
Image.transpose(method)
method 参数决定了图片要如何翻转,参数值如下:
Image.FLIP_LEFT_RIGHT:左右水平翻转;
Image.FLIP_TOP_BOTTOM:上下垂直翻转;
Image.ROTATE_90:图像旋转 90 度;
Image.ROTATE_180:图像旋转 180 度;
Image.ROTATE_270:图像旋转 270 度;
Image.TRANSPOSE:图像转置;
Image.TRANSVERSE:图像横向翻转
1234from PIL import Imageimg1 = Image.open("D:\\File\\All\\web\\python\\blog\ ...
Pillow图像分离与合并
Pillow图像分离与合并图像(指数字图像)由许多像素点组成,像素是组成图像的基本单位,而每一个像素点又可以使用不同的颜色,最终呈现出了绚丽多彩的图像。它们的本质就是图片呈现颜色时需要遵循的规则,比如 RGB、RGBA、CYMK 等,
而图像的分离与合并,指的就是图像颜色的分离和合并。
Image 类提供了用于分离图像和合并图像的方法 split() 和 merge() 方法,通常情况下,这两个方法会一起使用。
split()分离操作123456from PIL import Imageimg = Image.open("D:\\File\\All\\web\\python\\blog\\947849.jpg")r,g,b = img.split()r.show()g.show()b.show()
merge()合并操作Image 类提供的 merge() 方法可以实现图像的合并操作。
注意,图像合并,可以是单个图像合并,也可以合并两个以上的图像。merge() 方法的语法格式如下:
Image.merge(mode, bands)
参数说明如下:mode:指定输 ...
c语言杂项知识(一)
头文件的概念这一篇文章里面的知识比较杂也比较乱,但是看一下还是用一定的作用(相当于提醒一点易错点吧)
引入头文件的原因#include <stdio.h>是什么意思呢?C语言开发者们编写了很多常用函数,并分门别类的放在了不同的文件,这些文件就称为头文件(header file)。每个头文件中都包含了若干个功能类似的函数,调用某个函数时,要引入对应的头文件,否则编译器找不到函数。实际上,头文件往往只包含函数的说明,也就是告诉我们函数怎么用,而函数本身保存在其他文件中,在链接时才会找到。
对于初学者,可以暂时理解为头文件中包含了若干函数。引入头文件使用#include命令,并将文件名放在< >中,#include 和 < > 之间可以有空格,也可以没有。
数据的长度这个还是比较重要
强类型语言和弱类型语言除了C语言,Java、C++、C#等在定义变量时也必须指明数据类型,这样的编程语言称为强类型语言。而PHP、JavaScript等在定义变量时不必指明数据类型,编译系统会自动推演,这样的编程语言称为弱类型语言
格式控制符%d称为格式控制符,它指明了 ...
Tkinter库---Label标签控件
Tkinter Label标签控件Label(标签)控件,是 Tkinter 中最常使用的一种控件,主要用来显示窗口中的文本或者图像,并且不同的 Lable(标签)允许设置各自不同的背景图片。常用的属性anchor控制文本(或图像)在 Label 中显示的位置(方位),通过方位的英文字符串缩写(n、ne、e、se、s、sw、w、nw、center)实现定位,默认为居中(center)
bg用来设置背景色
bd即 borderwidth 用来指定 Label 控件的边框宽度,单位为像素,默认为 2 个像素
bitmap指定显示在 Label 控件上的位图,若指定了 image 参数,则该参数会被忽略
compound控制 Lable 中文本和图像的混合模式,若选项设置为 CENTER,则文本显示在图像上,如果将选项设置为 BOTTOM、LEFT、RIGHT、TOP,则图像显示在文本旁边。
cursor指定当鼠标在 Label 上掠过的时候,鼠标的的显示样式,参数值为 arrow、circle、cross、plus
disableforeground指定当 Label 设置为不可用状态的时 ...
Tkinter库的常用控件,方法和属性
Tkinter常用控件Button 按钮点击按钮时触发/执行一些事件(函数)
Canvas 画布提供绘制图,比如直线、矩形、多边形等
Checkbutton复选框多项选择按钮,用于在程序中提供多项选择框
Entry文本框输入框用于接收单行文本输入
Frame框架(容器)控件定义一个窗体(根窗口也是一个窗体),用于承载其他控件,即作为其他控件的容器
Lable标签控件用于显示单行文本或者图片
LableFrame容器控件一个简单的容器控件,常用于复杂的窗口布局。
Listbox列表框控件以列表的形式显示文本
Menu菜单控件菜单组件(下拉菜单和弹出菜单)
Menubutton菜单按钮控件用于显示菜单项
Message信息控件用于显示多行不可编辑的文本,与 Label控件类似,增加了自动分行的功能
messageBox消息框控件定义与用户交互的消息对话框
OptionMenu选项菜单下拉菜单
PanedWindow窗口布局管理组件为组件提供一个框架,允许用户自己划分窗口空间
Radiobutton单选框单项选择按钮,只允许从多个选项中选择一项
Scale进度条控件定义一个线性 ...
pillow图像格式转化和缩放操作
Pillow图片格式转换图片格式之间的转换主要有以下两种方法:
save() 方法用于保存图像,当不指定文件格式时,它会以默认的图片格式来存储;如果指定图片格式,则会以指定的格式存储图片。
save() 的语法格式如下:
Image.save(fp, format=None)
fp:图片的存储路径,要声明图片的名字和格式;format:可选参数,可以指定图片的格式。
123from PIL import Imageimg = Image.open("D:\\File\\All\\web\\python\\blog\\947849.jpg")img.save("D:\\File\\All\\web\\python\\blog\\949.jpg")
convert()+save()注意,并非所有的图片格式都可以用 save() 方法转换完成,比如将 PNG 格式的图片保存为 JPG 格式,如果直接使用 save() 方法就会出现以下错误:
引发错误的原因是由于 PNG 和 JPG 图像模式不一致导致的。其中 PNG 是四通道 RGBA 模 ...
pillow创建对象和对象属性
这里博主分享一个pillow库的使用笔记专题
Pillow除了 PIL 和 Pillow 库之外,Python 还提供了一些其他图像处理库:Scikit-image:一款基于 scipy 科学计算的图像处理软件包,以数组的形式对图像进行处理;OpenCV:其实是一个 C++ 图像处理库,不过它提供了 Python 语言的接口。(需要进阶的话可以看这个)
opencv在人工智能,面部识别方面应用的比较广泛
Pillow库特点Pillow 库作为图像处理的常用库,主要有以下三大特点:
支持广泛的文件格式Pillow 支持广泛的图像格式,比如 “jpeg”,”png”,”bmp”,”gif”,”ppm”,”tiff” 等。同时,它也支持图像格式之间的相互转换。
提供了丰富的功能Pillow 提供了丰富的图像处理功能,可概括为两个方面:图像归档,包括创建缩略图、生成预览图像、图像批量处理等;图像处理,则包括调整图像大小、裁剪图像、像素点处理、添加滤镜、图像颜色处理等。
配合GUI工具使用Pillow 库可以配合 Python GUI(图形用户界面)工具 Tkinter 一起使用(将他俩联 ...
c语言编译链接和软件安装
C语言编译和链接我们平时所说的程序,是指双击后就可以直接运行的程序,这样的程序被称为可执行程序,在 Windows 下,可执行程序的后缀有.exe和.com(其中.exe比较常见)
编译C语言代码由固定的词汇按照固定的格式组织起来,简单直观,程序员容易识别和理解,但是对于CPU,C语言代码就是天书,根本不认识,CPU只认识几百个二进制形式的指令。这就需要一个工具,将C语言代码转换成CPU能够识别的二进制指令,也就是将代码加工成 .exe 程序的格式;这个工具是一个特殊的软件,叫做编译器
编译器能够识别代码中的词汇、句子以及各种特定的格式,并将他们转换成计算机能够识别的二进制形式,这个过程称为编译
链接C语言代码经过编译以后,并没有生成最终的可执行文件(.exe 文件),而是生成了一种叫做目标文件(Object File)的中间文件(或者说临时文件)。目标文件也是二进制形式的,它和可执行文件的格式是一样的。对于 Visual C++,目标文件的后缀是.obj;对于 GCC(linux系统上面的),目标文件的后缀是.o
目标文件经过链接以后才能变成可执行文件
编译:只是将我们自己写的代码变 ...
数据在内存中的存储
这里博主给大家分享一下博主学习c/c++的时候学习的计算机基础的知识
这里博主建议小白可以先不看这篇文章,等有一定的基础过后再回过来看这篇文章就不会那么迷糊了
博主本人就是这样学的
数据在内存中的存储单位内存条是一个非常精密的部件,包含了上亿个电子元器件,它们很小,达到了纳米级别。这些元器件,实际上就是电路;电路的电压会变化,要么是 0V,要么是 5V,只有这两种电压。5V 是通电,用1来表示,0V 是断电,用0来表示。所以,一个元器件有2种状态,0 或者 1(没想到吧内存条竟然是这样的,当时博主也没想到)
一般情况下我们不一个一个的使用元器件,而是将8个元器件看做一个单位,即使表示很小的数,例如 1,也需要8个,也就是 00000001。
一个元器件称为1比特(Bit)或1位,8个元器件称为1字节(Byte),那么16个元器件就是2Byte,32个就是4Byte,1024Byte,简写为1KB(程序猿经典1024,哈哈)1024KB,简写为1MB1024MB,简写为1GB。
以后可别再以为1kb就是1000个字节了哈(作为程序员属实丢不起这个人)
程序的内存分配在计算机系统 ...
进制的介绍和进制的转换--详细版
先介绍一下 这是博主第二次学习进制的时候使用的笔记资料(不要问为啥是第二次学习,🙃😭因为第一次学完忘了)并且博主在第一次学习的时候,没有很好的笔记在进制转换的时候把自己搅混了
第二次学习完了将自己的一些对教程当中的关键的分享给大家
这里博主建议在阅读的时候大家,对于博主给出的例子都动手算一下
二进制、八进制和十六进制二进制在计算机内部,数据都是以二进制的形式存储的
其实二进制加减法和十进制加减法的思想是类似的
对于十进制,进行加法运算时逢十进一,进行减法运算时借一当十;对于二进制,进行加法运算时逢二进一,进行减法运算时借一当二。
二进制加法:1+0=1、1+1=10、11+10=101、111+111=1110
二进制减法:1-0=1、10-1=1、101-11=10、1100-111=101
大家可以类比去记忆这个
八进制八进制有 0~7 共8个数字(一定要记住是0-7不是1-8或者0-8),基数为8,
加法运算时逢八进一,减法运算时借一当八(其实八进制二进制还有个十六进制他们的加减法运算规则是一 ...