计算机视觉编程

devtools/2024/9/23 14:43:38/

目录

灰色度

 缩略图

拷贝粘贴区域

调整图像尺寸 

 旋转图像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.ppmy.cn/devtools/100127.html

相关文章

《Cloud Native Data Center Networking》(云原生数据中心网络设计)读书笔记 -- 07数据中心的边缘

本章将帮助你回答以下问题 可以用哪些方式将 Clos 拓扑连接到外部网终?边缘部署路由协议的最佳实践是什么?企业应如何处理混合云中的连接? 连接模型 为什么要连接到外部世界? 数据中心连接到外部世界的原因很多。如果你要对外提供某种服务(例如搜索服务广告推荐系统或内…

【SpringCloud Alibaba】(九)学习 Gateway 服务网关

目录 1、网关概述1.1、没有网关的弊端1.2、引入 API 网关 2、主流的 API 网关2.1、NginxLua2.2、Kong 网关2.3、Zuul 网关2.4、Apache Shenyu 网关2.5、SpringCloud Gateway 网关 3、SpringCloud Gateway 网关3.1、Gateway 概述3.2、Gateway 核心架构 4、项目整合 SpringCloud …

Golang学习笔记-Golang中的锁

同步原语和锁 Golang作为一个原生支持用户态的语言,当提到并发进程,多线程的时候,是离不开锁的,锁是一种并发编程中的同步原语(Synchronization Primitives),它能保证多个 Goroutine 在访问同一…

STM32GPIO引脚八种工作模式

1. GPIO简述 GPIO(General-purpose input/output),通用型输入输出。简单理解就是我们可以控制输入输出的STM32引脚,统称为GPIO。 GPIO存在的意义就是用程序控制或读取它们的输出或输入。 2. 功能描述 每个GPI/O端口有两个32位配…

谷歌、火狐及Edge等浏览器如何使用allWebPlugin中间件响应ActiveX插件事件

allWebPlugin简介 allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品,致力于将浏览器插件重新应用到所有浏览器。它将现有ActiveX控件直接嵌入浏览器,实现插件加载、界面显示、接口调用、事件回调等。支持Chrome、Firefo…

1.反爬虫机制

一、IP 封锁 网站可以检测请求的IP地址,并封锁那些频繁请求的IP,使其无法访问网站。这是一种常见的反爬虫策略,用于防止单个IP地址对服务器造成过大的负载。 解决办法 : 使用代理IP池以避免IP封锁 // 待补充 二、请求头检测(Us…

【软考】网络安全控制技术

目录 1. 说明2. 防火墙技术3. 加密技术4. 用户识别技术5. 访问控制技术6. 网络反病毒技术7. 网络安全漏洞扫描技术8.入侵检测技术9.例题 1. 说明 1.为了保护网络信息的安全可靠,除了运用法律和管理手段外,还需依靠技术方法来实现。2.网络安全控制技术目…

IT 行业的就业情况

当前,IT 行业的就业情况呈现出以下特点: 1. 需求持续增长:随着数字化转型的加速,各个行业对信息技术的依赖程度不断提高,推动了对 IT 人才的持续需求。特别是在云计算、大数据、人工智能、物联网等新兴领域&#xff…