python实战实例:图像相似度旋转模糊处理

2024-08-31 10:52

本文主要是介绍python实战实例:图像相似度旋转模糊处理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.图像相似度—题目描述

给出两幅相同大小的黑白图像(用 0−1矩阵)表示,求它们的相似度。

说明:若两幅图像在相同位置上的像素点颜色相同,则称它们在该位置具有相同的像素点。两幅图像的相似度定义为相同像素点数占总像素点数的百分比。

输入格式

第一行包含两个整数 m 和 n,表示图像的行数和列数,中间用单个空格隔开。

之后 m 行,每行 n个整数 0 或 1,表示第一幅黑白图像上各像素点的颜色。相邻两个数之间用单个空格隔开。

之后 m 行,每行 n 个整数 0 或 1,表示第二幅黑白图像上各像素点的颜色。相邻两个数之间用单个空格隔开。

输出格式

一个实数,表示相似度(以百分比的形式给出),精确到小数点后两位。

输入输出样例

输入 #1

3 3
1 0 1
0 0 1
1 1 0
1 1 0
0 0 1
0 0 1

输出 #1

44.44
m,n=map(int,input().split())
a=[[0 for _ in range(n)]for _ in range(m)]
b=[[0 for _ in range(n)]for _ in range(m)]
x=0
for i in range(m):row=input().split()for j in range(n):a[i][j]=eval(row[j])
for i in range(m):row=input().split()for j in range(n):b[i][j]=eval(row[j])
for i in range(m):for j in range(n):if a[i][j]==b[i][j]:x=x+1
print("%.2f"%(x/(m*n)*100))

解析:

  • a=[[0 for _ in range(n)]for _ in range(m)]定义一个m行n列的矩阵。
  • 输入数据给矩阵赋值。
  • 直接循环判断两个矩阵的相同的点,除以矩阵大小即得出相似度。

2.图像旋转—题目描述

输入一个 n 行 m 列的黑白图像,将它顺时针旋转 90度后输出。

输入格式

第一行包含两个整数 n 和 m,表示图像包含像素点的行数和列数。

接下来 n行,每行 m个整数,表示图像的每个像素点灰度。相邻两个整数之间用单个空格隔开。

输出格式

m 行,每行 n个整数,为顺时针旋转 90度后的图像。相邻两个整数之间用单个空格隔开。

输入输出样例

输入 #1

3 3
1 2 3
4 5 6
7 8 9

输出 #1

7 4 1
8 5 2
9 6 3
n,m=map(int,input().split())
a=[[0 for _ in range(m)]for _ in range(n)]
for i in range(n):x=input().split()for j in range(m):a[i][j]=int(x[j])
for i in range(m):for j in range(n-1,-1,-1):print(a[j][i],end=' ')print()

解析:

  • 旋转90度后矩阵元素的下标:
a[2][0] a[1][0] a[0][0]
a[2][1] a[1][1] a[0][1]
a[2][2] a[1][2] a[0][2]
  • 所以将列下标倒序输出即可。

3.图像模糊处理—题目描述

给定 n行 m列的图像各像素点的灰度值,要求用如下方法对其进行模糊化处理:

1. 四周最外侧的像素点灰度值不变;

2. 中间各像素点新灰度值为该像素点及其上下左右相邻四个像素点原灰度值的平均(舍入到最接近的整数)。

输入格式

第一行包含两个整数 n 和 m,表示图像包含像素点的行数和列数。

接下来 n 行,每行 m个整数,表示图像的每个像素点灰度。相邻两个整数之间用单个空格隔开。

输出格式

n 行,每行 m 个整数,为模糊处理后的图像。相邻两个整数之间用单个空格隔开。

输入输出样例

输入 #1

4 5
100 0 100 0 50
50 100 200 0 0
50 50 100 100 200
100 100 50 50 100

输出 #1

100 0 100 0 50
50 80 100 60 0
50 80 100 90 200
100 100 50 50 100
n,m=map(int,input().split())
a=[[0 for _ in range(m)]for _ in range(n)]
b=[[0 for _ in range(m)]for _ in range(n)]
for i in range(n):x=input().split()for j in range(m):a[i][j]=int(x[j])
for i in range(n):for j in range(m):if i==0 or i==n-1 or j==0 or j==m-1:b[i][j]=a[i][j]else:b[i][j]=round((a[i][j]+a[i-1][j]+a[i+1][j]+a[i][j-1]+a[i][j+1])/5)
for i in range(n):for j in range(m):print(b[i][j],end=' ')print() 

 解析:

  • 定义两个矩阵,一个原矩阵,一个新矩阵。
  • 首先判断是否首行、末行、首列、末列,如果是,值不变。
  • 如果不是,求出该元素及其上下左右相邻四个像素点原灰度值的平均值覆盖原值。
  • 输出新矩阵即可。

到矩阵啦~

这篇关于python实战实例:图像相似度旋转模糊处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1123704

相关文章

python版本切换工具pyenv的安装及用法

《python版本切换工具pyenv的安装及用法》Pyenv是管理Python版本的最佳工具之一,特别适合开发者和需要切换多个Python版本的用户,:本文主要介绍python版本切换工具pyen... 目录Pyenv 是什么?安装 Pyenv(MACOS)使用 Homebrew:配置 shell(zsh

SpringBoot整合 Quartz实现定时推送实战指南

《SpringBoot整合Quartz实现定时推送实战指南》文章介绍了SpringBoot中使用Quartz动态定时任务和任务持久化实现多条不确定结束时间并提前N分钟推送的方案,本文结合实例代码给大... 目录前言一、Quartz 是什么?1、核心定位:解决什么问题?2、Quartz 核心组件二、使用步骤1

Python自动化提取多个Word文档的文本

《Python自动化提取多个Word文档的文本》在日常工作和学习中,我们经常需要处理大量的Word文档,本文将深入探讨如何利用Python批量提取Word文档中的文本内容,帮助你解放生产力,感兴趣的小... 目录为什么需要批量提取Word文档文本批量提取Word文本的核心技术与工具安装 Spire.Doc

Nginx服务器部署详细代码实例

《Nginx服务器部署详细代码实例》Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务,:本文主要介绍Nginx服务器部署的相关资料,文中通过代码... 目录Nginx 服务器SSL/TLS 配置动态脚本反向代理总结Nginx 服务器Nginx是一个‌高性

SpringBoot整合AOP及使用案例实战

《SpringBoot整合AOP及使用案例实战》本文详细介绍了SpringAOP中的切入点表达式,重点讲解了execution表达式的语法和用法,通过案例实战,展示了AOP的基本使用、结合自定义注解以... 目录一、 引入依赖二、切入点表达式详解三、案例实战1. AOP基本使用2. AOP结合自定义注解3.

Python中Request的安装以及简单的使用方法图文教程

《Python中Request的安装以及简单的使用方法图文教程》python里的request库经常被用于进行网络爬虫,想要学习网络爬虫的同学必须得安装request这个第三方库,:本文主要介绍P... 目录1.Requests 安装cmd 窗口安装为pycharm安装在pycharm设置中为项目安装req

Python容器转换与共有函数举例详解

《Python容器转换与共有函数举例详解》Python容器是Python编程语言中非常基础且重要的概念,它们提供了数据的存储和组织方式,下面:本文主要介绍Python容器转换与共有函数的相关资料,... 目录python容器转换与共有函数详解一、容器类型概览二、容器类型转换1. 基本容器转换2. 高级转换示

使用Python将PDF表格自动提取并写入Word文档表格

《使用Python将PDF表格自动提取并写入Word文档表格》在实际办公与数据处理场景中,PDF文件里的表格往往无法直接复制到Word中,本文将介绍如何使用Python从PDF文件中提取表格数据,并将... 目录引言1. 加载 PDF 文件并准备 Word 文档2. 提取 PDF 表格并创建 Word 表格

使用Python实现局域网远程监控电脑屏幕的方法

《使用Python实现局域网远程监控电脑屏幕的方法》文章介绍了两种使用Python在局域网内实现远程监控电脑屏幕的方法,方法一使用mss和socket,方法二使用PyAutoGUI和Flask,每种方... 目录方法一:使用mss和socket实现屏幕共享服务端(被监控端)客户端(监控端)方法二:使用PyA

Python列表的创建与删除的操作指南

《Python列表的创建与删除的操作指南》列表(list)是Python中最常用、最灵活的内置数据结构之一,它支持动态扩容、混合类型、嵌套结构,几乎无处不在,但你真的会创建和删除列表吗,本文给大家介绍... 目录一、前言二、列表的创建方式1. 字面量语法(最常用)2. 使用list()构造器3. 列表推导式