计算机视觉编程 1(图片处理)

目录

灰色度

 缩略图

拷贝粘贴区域

调整图像尺寸 

 旋转图像45°

画图线、描点 


灰色度

灰度是指图像中每个像素的亮度值,用来描述图像中各个像素的明暗程度。在计算机视觉中,灰度可以通过以下方式来计算:

1. 平均值法:将图像中每个像素的RGB值(红、绿、蓝)相加,然后除以3,得到灰度值。

2. 加权平均法:将图像中每个像素的RGB值分别乘以不同的权重,然后相加,得到灰度值。常用的权重是:红色权重为0.299,绿色权重为0.587,蓝色权重为0.114。

3. 单一通道法:将图像中的一个通道(一般选择红色通道、绿色通道或蓝色通道)的像素值作为灰度值。

这些方法都可以用来计算图像的灰度值,根据具体的应用场景和需求,选择合适的方法进行灰度计算。

# -*- coding: utf-8 -*-
from PIL import Image
from pylab import *# 添加中文字体支持
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"c:\windows\fonts\SimSun.ttc", size=14)
figure()pil_im = Image.open(r"图片路径")
gray()
subplot(121)
title(u'原图',fontproperties=font)
axis('off')
imshow(pil_im)pil_im = Image.open("图片路径").convert('L')
subplot(122)
title(u'灰度图',fontproperties=font)
axis('off')
imshow(pil_im)show()

 缩略图

缩略图是指按照一定比例或尺寸将原始图像进行压缩和裁剪后得到的小尺寸图像,用于快速展示大尺寸原始图像的预览效果。在计算机视觉中,生成缩略图可以有以下几种方式:

1. 等比例缩放法:按照设定的比例将原始图像的宽度和高度同时缩小,保持原始图像的宽高比。这样可以得到一个缩小的图像,保持了原始图像的比例。

2. 固定尺寸缩放法:按照设定的固定宽度或高度将原始图像进行缩放,可能会导致图像的宽高比失衡。

3. 裁剪压缩法:将原始图像按照设定的比例进行裁剪,然后再进行等比例或固定尺寸缩放。

4. 图像压缩算法:使用图像压缩算法,如JPEG、PNG等,将原始图像进行压缩,同时设定压缩质量和尺寸,得到缩略图。

生成缩略图的目的是为了在资源有限的情况下能够快速加载和展示图像,节省带宽和提高用户体验。具体应用场景包括网页中的图像展示、相册浏览、图像搜索等。

# -*- coding: utf-8 -*-
from PIL import Image
from pylab import *# 添加中文字体支持
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"c:\windows\fonts\SimSun.ttc", size=14)
figure()# 显示原图
pil_im = Image.open(r"图片路径")
print(pil_im.mode, pil_im.size, pil_im.format)
subplot(121)
title(u'原图', fontproperties=font)
axis('off')
imshow(pil_im)# 缩略图
pil_im = Image.open('图片路径')
size = 128, 128
pil_im.thumbnail(size)
print(pil_im.size)
subplot(122)
title(u'缩略图', fontproperties=font)
axis('off')
imshow(pil_im)show()

拷贝粘贴区域

# -*- coding: utf-8 -*-
from PIL import Image
from pylab import *# 添加中文字体支持
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"c:\windows\fonts\SimSun.ttc", size=14)
figure()# 显示原图
pil_im = Image.open(r"图片路径")
print(pil_im.mode, pil_im.size, pil_im.format)
subplot(121)
title(u'原图', fontproperties=font)
axis('off')
imshow(pil_im)#拷贝粘贴区域
pil_im = Image.open('图片路径')
box = (50,50,200,200)
region = pil_im.crop(box)
region = region.transpose(Image.ROTATE_180)
pil_im.paste(region,box)
subplot(122)
title(u'拷贝粘贴区域', fontproperties=font)
axis('off')
imshow(pil_im)show()

调整图像尺寸 

# -*- coding: utf-8 -*-
from PIL import Image
from pylab import *# 添加中文字体支持
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"c:\windows\fonts\SimSun.ttc", size=14)
figure()# 显示原图
pil_im = Image.open(r"图片路径")
print(pil_im.mode, pil_im.size, pil_im.format)
subplot(121)
title(u'原图', fontproperties=font)
axis('off')
imshow(pil_im)# 调整图像尺寸
pil_im = Image.open('图片路径')
size = 128, 128
pil_im = pil_im.resize(size)
print (pil_im.size)
subplot(122)
title(u'调整尺寸后的图像', fontproperties=font)
axis('off')
imshow(pil_im)show()

 

 旋转图像45°

# -*- coding: utf-8 -*-
from PIL import Image
from pylab import *# 添加中文字体支持
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"c:\windows\fonts\SimSun.ttc", size=14)
figure()# 显示原图
pil_im = Image.open(r"图片路径")
print(pil_im.mode, pil_im.size, pil_im.format)
subplot(121)
title(u'原图', fontproperties=font)
axis('off')
imshow(pil_im)# 旋转图像45°
pil_im = Image.open('图片路径')
pil_im = pil_im.rotate(45)
subplot(122)
title(u'旋转45°后的图像', fontproperties=font)
axis('off')
imshow(pil_im)show()

 

画图线、描点 

# -*- coding: utf-8 -*-
from PIL import Image
from pylab import *# 添加中文字体支持
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"c:\windows\fonts\SimSun.ttc", size=14)im = array(Image.open('D:\\pycharm hgy\\第一个\\计算机视觉\\第一章\\data\\1.jpg'))
figure()# 画有坐标轴的
subplot(121)
imshow(im)
x = [100, 100, 250, 250]
y = [200, 300, 200, 300]
plot(x, y, 'r*')
plot(x[:2], y[:2])
title(u'绘图: "empire.jpg"', fontproperties=font)# 不显示坐标轴
subplot(122)
imshow(im)
x = [100, 100, 250, 250]
y = [200, 300, 200, 300]
plot(x, y, 'r*')
plot(x[:2], y[:2])
axis('off')  #显示坐标轴
title(u'绘图: "empire.jpg"', fontproperties=font)show()

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/411481.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

E:Failed to fetch的解决方案——Linux换源方法

错误描述 在sudo apt-get时报错 E: Failed to fetch https://mirrors.bupt.edu.cn/ubuntu/pool/universe/libc/libcanberra/libcanberra-gtk0_0.30-7ubuntu1_amd64.deb 403 Forbidden 这种错通常是该源在当前网络下无法连接导致(如笔者从教育网换回家里的网&#x…

Kubernetes存储Volume

数据是一个企业的发展核心,他涉及到数据存储和数据交换的内容。在生产环境中尤为重要的一部分,在 Kubernetes 中另一个重要的概念就是数据持久化 Volume。 一、Volume的概念 对于大多数的项目而言,数据文件的存储是非常常见的需求,比如存储用…

大模型低显存推理优化-Offload技术

近两年大模型火出天际;同时,也诞生了大量针对大模型的优化技术。本系列将针对一些常见大模型优化技术进行讲解。 [大模型推理优化技术-KV Cache][大模型推理服务调度优化技术-Continuous batching]大模型显存优化技术-PagedAttention大模型低显存推理优…

爬虫入门学习

流程 获取网页内容 HTTP请求 Python Requests解析网页内容 HTML网页结构 Python Beautiful Soup储存或分析数据 HTTP (Hypertext Transfer Protocol) 客户端和服务器之间的请求-响应协议 Get方法:获得数据 POST方法:创建数据 HTTP请求 请求行 方法类型…

零基础国产GD32单片机编程入门(二)GPIO输入中断含源码

文章目录 一.概要二.可嵌套的向量中断控制器 (NVIC)三.中断向量表四.中断优先级详解五.GD32外部中断控制器(EXTI)1.EXTI简介2.EXTI在中断向量表的位置3.EXTI外部中断产生的信号流向4.EXTI中断产生后的中断服务程序 六.GPIO输入中断的例程实验七.工程源代码下载八.小结 一.概要 …

Django+vue自动化测试平台(29)--测试平台集成playwright录制pytest文件执行

需求背景 一、 系统目标与功能概述 脚本管理: 系统需要能够组织和存储所有通过playwright官方插件录制的脚本。这包括脚本的上传、编辑、删除和版本控制功能。 脚本执行: 用户应该能够在后台界面上查看所有可用的脚本,并能够通过简单的点击操作来启动特定脚本的执…

Visual Basic 6.0教程/Visual Basic从入门到实践/Visual Basic学习视频教程

Visual Basic 6.0教程/Visual Basic从入门到实践/Visual Basic学习视频教程 李天生VB从入门到精通 第一章 VisualBasic6基本介绍 第二章 VisualBasic6的数据类型与运算符表达式 第三章 VisualBasic6的内部函数 第四章 VisualBasic6的基本语句 第五章 VisualBasic6的数组 第六章…

RX 8000系显卡规格曝光,全系GDDR6纯过渡产品

原文转载修改自(更多互联网新闻/搞机小知识): RX 8000系显卡规格首曝,GDDR6显存就很骨感 前天,我们刚刚聊过有过新一代RTX 50系消息,虽然是按部就班地升级,但好在也是在升级。50系换核心升级显…

Sentinel熔断与限流

一、服务雪崩与解决方案 1.1、服务雪崩问题 一句话:微服务之间相互调用,因为调用链中的一个服务故障,引起整个链路都无法访问的情况。 微服务中,服务间调用关系错综复杂,一个微服务往往依赖于多个其它微服务。 如图…

RabbitMQ 集群与高可用性

目录 单节点与集群部署 1.1. 单节点部署 1.2. 集群部署 镜像队列 1.定义与工作原理 2. 配置镜像队列 3.应用场景 4. 优缺点 5. Java 示例 分布式部署 1. 分布式部署的主要目标 2. 典型架构设计 3. RabbitMQ 分布式部署的关键技术 4. 部署策略和实践 5. 分布式部署…

前端开发学习Docker记录01镜像操作

Docker相关命令 Demo安装nginx 先搜索然后拉取,然后查看images列表是不是拉取成功 docker search nginxdocker pull nginx特定某个版本,镜像名:版本号 docker images

layui2.9 树组件默认无法修改节点图标,修改过程记录下

官方文档树组件 data 参数值&#xff0c;未提供icon属性配置 需要修改源码 layui.js, 搜索图片中标记部分 查找到之后&#xff0c;修改为 <i class“‘(i.icon || “layui-icon layui-icon-file”)’”> 如图&#xff1a; 修改完成后&#xff0c;即可在data中添加icon…

redis学习笔记 ——redis中的四大特殊数据结构

一.前言 在之前的学习中&#xff0c;我们已经介绍了Redis中常见的五种基本的数据结构&#xff0c;而今天我们就要开始介绍Redis的四种特殊的数据结构&#xff0c;它们分别是bitmap(位图)&#xff0c; HyperLogLog(基数统计),Geospatial(地理信息),Stream。 二.位图(Bitmap) …

Windows安装PostgreSQL数据库,保姆级教程

PostgreSQL 是客户端/服务器关系数据库管理系统 (RDMS)。PostgreSQL是一个功能非常强大的、源代码开放的客户/服务器关系型数据库管理系统&#xff08;RDBMS&#xff09;。PostgreSQL 也有自己的查询语言&#xff0c;称为 pgsql。 此外&#xff0c;PostgreSQL 还支持过程语言&a…

CS224W—07 Machine Learning with Heterogeneous Graphs

CS224W—07 Machine Learning with Heterogeneous Graphs 本节中&#xff0c;我们将学习如何在异构图中进行图神经网络学习。 Heterogeneous Graphs 图中的节点类型/边类型不同&#xff0c;就会形成一个异构图&#xff08;Heterogeneous Graph&#xff09;&#xff0c;例如下…

基于SpringBoot的在线答疑管理系统

基于SpringBootVue的在线答疑管理系统【附源码文档】、前后端分离 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBoot、Vue、Mybaits Plus、ELementUI工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 摘要 基于SpringBoot的在线答疑管理系…

如何使用IDEA搭建Mybatis框架环境(详细教程)

文章目录 ☕前言为什么学习框架技术Mybatis框架简介 &#x1f379;一、如何配置Mybatis框架环境1.1下载需要MyBatis的jar文件1.2部署jar文件1.3创建MyBatis核心配置文件configuration.xml1.4.创建持久类(POJO)和SQL映射文件1.5.创建测试类 &#x1f9cb;二、 MyBatis框架的优缺…

Linux下UDP编程

一.概念介绍 1.socket 是什么&#xff1f; socket&#xff08;套接字&#xff09;本质上是一个抽象的概念&#xff0c;它是一组用于网络通信的 API&#xff0c;提供了一种统一的接口&#xff0c;使得应用程序可以通过网络进行通信。在不同的操作系统中&#xff0c;socket 的实…

【Python系列】Jinja2 模板引擎

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【软件测试】软件测试生命周期与Bug

目录 &#x1f4d5; 前言 &#x1f334;软件测试的生命周期 ​编辑&#x1f332;BUG &#x1f6a9; 概念 &#x1f6a9;描述bug的要素 &#x1f6a9;bug的级别 &#x1f6a9;bug的生命周期 &#x1f3c0;先检查自身&#xff0c;是否bug描述不清楚 &#x1f3c0;站在用…