计算机视觉学习总结:基本的图像操作和处理(一)

2023-11-06

PIL:Python图像处理类库

PIL(Python Imaging Library Python,图像处理类库)提供了通用的图像处理功能, 以及大量有用的基本图像操作,比如图像缩放、裁剪、旋转、颜色转换等。

基本操作

1、读取图片及灰度转换

from PIL import Image
#读取照片
img=Image.open('1.jpg')
#灰度转换
img2=Image.open('1.jpg').convert('L')

2、转换图像格式

from PIL import Image
import os
for infile in filelist:
    outfile = os.path.splitext(infile)[0] + ".jpg"
    if infile != outfile:
        try:
            Image.open(infile).save(outfile)
        except IOError:
            print("cannot convert", infile)

Tip:os库主要和路径操作有关

3、创建缩略图

img.thumbnail((128,128))#无返回值,直接在原图进行操作

4、剪切图像

from PIL import Image
from pylab import *
img=Image.open('7.jpg')
#PIL 中指定坐标系的左上角坐标为(0,0)
#裁剪图片
box=(200,200,500,500)
#以(200,200)为左上角,(500,500)为右下角
img2=img.crop(box)

figure()
subplot(1,2,1)
imshow(img)
subplot(1,2,2)
imshow(img2)
axis('off')
show()

7d819e4ba2494f53a8c08b54bb41dc74.png

 5、粘贴图像

from PIL import Image
from pylab import *
img=Image.open('7.jpg')
box=(200,200,500,500)
img2=img.crop(box)

#旋转图像
img3=img2.transpose(Image.ROTATE_180)
#粘贴到原图像
img.paste(img3,box)

figure()
subplot(1,3,1)
imshow(img2)
subplot(1,3,2)
imshow(img3)
subplot(1,3,3)
imshow(img)
axis('off')
show()

f72c6967d0c3482c97eef7cb03e7d977.png

 6、调整尺寸和旋转

out = img.resize((128,128))

out = img.rotate(45)#逆时针旋转

个人对thumbnail与resize区别的理解:

1、thumbnail不改变图片的长宽比,resize改变

2、thumbnail无返回值,resize返回jpg图像

 Matplotlab

我们处理数学运算、绘制图表,或者在图像上绘制点、直线和曲线时,Matplotlib 是个很好的类库,具有比 PIL 更强大的绘图功能。Matplotlib 可以绘制出高质量的 图表,就像本书中的许多插图一样。Matplotlib 中的 PyLab 接口包含很多方便用户 创建图像的函数。

 1、绘制图像、点、线

from PIL import Image
from pylab import *
# 读取图像到数组中
im = array(Image.open('empire.jpg'))
# 绘制图像
imshow(im)
# 一些点
x = [100,100,400,400]
y = [200,500,200,500]
# 使用红色星状标记绘制点
plot(x,y,'r*')
# 绘制连接前两个点的线
plot(x[:2],y[:2])
# 添加标题,显示绘制的图像
title('Plotting: "empire.jpg"')
show()

 

e7376484b9f5418ca4813dfd6d332fd7.png

在绘图时,有很多选项可以控制图像的颜色和样式。使用如下:

76c7452b067144c7b91e4a76bb6f4e42.png

 也可以自己去查询更多使用方法。

 2、图像轮廓和直方图

from PIL import Image
from pylab import *
# 读取图像到数组中
im = array(Image.open('7.jpg').convert('L'))

figure()
#不使用颜色信息
gray()

#绘制轮廓图像
contour(im,origin='image')

#设置图像坐标轴刻度比例相等
axis('equal')
axis('off')

figure()
#绘制直方图
hist(im.flatten(),128)
show()

 98afedc50f1a4e8dab1200a9b979b8a8.png

 

 hist() 函数的第二个参数指定小区间的数目。需要注意的是,因为 hist() 只接受一 维数组作为输入,所以我们在绘制图像直方图之前,必须先对图像进行压平处理。 flatten() 方法将任意数组按照行优先准则转换成一维数组。

3、交互式标注

有时用户需要和某些应用交互,例如在一幅图像中标记一些点,或者标注一些训练数据。

from PIL import Image
from pylab import *
# 读取图像到数组中
im = array(Image.open('7.jpg'))

figure()
imshow(im)
print('Please click 3 points')
#返回一个包含这三个点的坐标列表
x = ginput(3)
print('you clicked:',x)
show()

f175746273474d0eafa0531130b02af0.png

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算机视觉学习总结:基本的图像操作和处理(一) 的相关文章

随机推荐

  • 北京时间--UNIX时间戳 相互转换

    UNIX时间戳 13位 10位 毫秒 秒 北京时间转换为13位时间戳 UTC 8 gt UTC gt 时间戳 e g DECLARE DATE DATETIME SET DATE DATEADD HOUR 8 2018 12 07 14 3
  • 华为od机试 Java 【单词前缀】

    题目 描述 给定一个单词前缀和一个字典 你的任务是从字典中找出所有以该前缀开头的单词 输入 输入的第一个单词是你要查找的前缀 接下来的数字表示字典中的单词数量 紧随其后的是字典中的单词 单词之间由空格分隔 输出 如果存在以给定前缀开头的单词
  • 【计算机网络】传输层协议-------TCP详解

    文章目录 1 TCP 协议概述 2 TCP原理 2 1 保持可靠性的机制 2 1 1 确认应答 2 1 2 超时重传 2 1 3 连接管理机制 安全机制 2 1 3 1 三次握手 2 1 3 2 四次挥手 2 1 4 滑动窗口 2 1 5
  • 在pycharm用python画图:matplotlib

    安装matplotlib 先找到自己的python位置 再进入Scripts文件夹 我的是C Users mi AppData Local Programs Python Python39 Scripts 一定要找对 否则下面的命令没有任何
  • Flex (SDK 4.5) 中直接使用 H.264 编码视频

    最近用到 Flex FMS 实现一个视频通信 而且需要用 H 264 编码 但 Flash 本身只能采用 VP6 H 263 编码 要想编码为 H 264 必须要利用第三方工具 Flash Media Live Encoder 这也是我不愿
  • 计算智能——感知器模型

    主要内容 1 感知器总述 2 感知器模型 3 感知器策略 建立损失函数 4 感知器算法 梯度下降和随机梯度下降 4 1梯度下降 4 2随机梯度下降 5 感知器MATLAB简单实现 5 1newp函数 5 2sim函数 5 3init函数 5
  • mysql提示表不存在的解决方法error: 1146: Table doesn't exist

    如果表真的不存在就新建对应表 如果存在 则 1 这种情况一般只要重启下数据库就能解决 2 或者把原来mysql安装目录data里的 ibdata1 文件也拷贝过去 不确定是否会影响MySQL里的原有数据库 请先备份ibdata1文件
  • HTML5是什么与什么合作推出的语言,H5和Html5是一回事吗?-- -H5和Html5问答

    经常有人问何为H5 或发个网页问是不是H5 真让回答 一两句也讲不清楚 所以先聊聊我理解的H5广告究竟如何定义 H5广告是什么 广告在生活中可是不新鲜了 不管你乐不乐意 带这个符号的传播物每天都在消耗着你的时间 你的精力 甚至还有你的情感
  • 内存数据库解析与主流产品对比(三)

    作者 实验室小陈 大数据开放实验室 在上一篇文章 内存数据库解析与主流产品对比 二 中 我们从数据组织和索引的角度介绍了内存数据库的特点和几款产品的技术实现 本文将继续解析内存数据库 从并发控制 持久化和查询处理的角度介绍几款技术 带来更多
  • Unity提高工作效率的终极指南

    本套课程指南通过关于如何更快 更智能地工作的最新技术 帮助Unity创作者节省时间并提高工作效率 你会学到 Unity的创建者节省了时间 提高了生产力 关于如何更快地使用程序员和艺术家工具集的技巧 无论是个人还是团队 Unity应该是一种快
  • 什么是布隆过滤器?如何使用?

    欢迎搜索 文章目录 一 布隆过滤器简介 二 布隆过滤器的结构 三 布隆过滤器应用 四 布隆过滤器的优缺点 五 布隆过滤器实战 六 总结 Redis缓存穿透可以通过布隆过滤器进行解决 那么什么是布隆过滤器呢 请往下看 通常你判断某个元素是否存
  • 在Unity中编写Shader的编译器环境配置(支持CG和HLSL)

    Unity默认使用的编译器VisualStudio带有扩展插件ShaderLabVS 但功能很差 所以还是选用VisualStudioCode作为编写Shader的编译器 一方面其能自动识别Shaderlab语法 并且还有丰富的Shader
  • vue脚手架中创建自定义指令

    局部自定义指令直接在组件内部创建
  • 使用tee命令 将bash -x 输出的内容保存到文件中

    tee 命令语法 tee ai help version 文件 参数 a或 append 附加到既有文件的后面 而非覆盖它 i或 ignore interrupts 忽略中断信号 help 在线帮助 version 显示版本信息 示例 ba
  • java -jar 启动脚本

    ccue sh 需 chomd x ccue sh 启动使用 ccue sh start bin sh ccue sh start 启动 stop 停止 restart 重启 status 状态 AppName ccue server ja
  • 【一分钟解决】Python报错ImportError: attempted relative import with no known parent package

    文章目录 报错关键词 常见问题汇总及排查 1 在脚本中使用相对导入 详细解决方案 1 看这段基本够了 使用相对导入的时机 2 扩展 如果你真的需要在包平级目录以外的位置调用包 参考链接 扩展 名词解释 脚本 script 模块 module
  • 【Python 3.7】分子运动:修改 rw_visual.py,将其中的 plt.scatter() 替换为 plt.plot() 。为 模拟花粉在水滴表面的运动路径

    Python 3 7 分子运动 修改 rw visual py 将其中的 plt scatter 替换为 plt plot 为 模拟花粉在水滴表面的运动路径 向 plt plot 传递 rw x values 和 rw y values 并
  • 前端canvas绘制水波球

    效果如下图 代码
  • 创建软链接(symbolic link)

    Linux ln命令是一个非常重要命令 它的功能是为某一个文件在另外一个位置建立一个同步的链接 类似windows下的快捷方式 Linux文件系统中 有所谓的链接 link 我们可以将其视为档案的别名 而链接又可分为两种 硬链接 hard
  • 计算机视觉学习总结:基本的图像操作和处理(一)

    PIL Python图像处理类库 PIL Python Imaging Library Python 图像处理类库 提供了通用的图像处理功能 以及大量有用的基本图像操作 比如图像缩放 裁剪 旋转 颜色转换等 基本操作 1 读取图片及灰度转换