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

相关文章

Pandas使用SQLite3实战

《Pandas使用SQLite3实战》本文主要介绍了Pandas使用SQLite3实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1 环境准备2 从 SQLite3VlfrWQzgt 读取数据到 DataFrame基础用法:读

Springboot处理跨域的实现方式(附Demo)

《Springboot处理跨域的实现方式(附Demo)》:本文主要介绍Springboot处理跨域的实现方式(附Demo),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录Springboot处理跨域的方式1. 基本知识2. @CrossOrigin3. 全局跨域设置4.

springboot security验证码的登录实例

《springbootsecurity验证码的登录实例》:本文主要介绍springbootsecurity验证码的登录实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录前言代码示例引入依赖定义验证码生成器定义获取验证码及认证接口测试获取验证码登录总结前言在spring

Python如何使用__slots__实现节省内存和性能优化

《Python如何使用__slots__实现节省内存和性能优化》你有想过,一个小小的__slots__能让你的Python类内存消耗直接减半吗,没错,今天咱们要聊的就是这个让人眼前一亮的技巧,感兴趣的... 目录背景:内存吃得满满的类__slots__:你的内存管理小助手举个大概的例子:看看效果如何?1.

Python+PyQt5实现多屏幕协同播放功能

《Python+PyQt5实现多屏幕协同播放功能》在现代会议展示、数字广告、展览展示等场景中,多屏幕协同播放已成为刚需,下面我们就来看看如何利用Python和PyQt5开发一套功能强大的跨屏播控系统吧... 目录一、项目概述:突破传统播放限制二、核心技术解析2.1 多屏管理机制2.2 播放引擎设计2.3 专

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

Python 中的异步与同步深度解析(实践记录)

《Python中的异步与同步深度解析(实践记录)》在Python编程世界里,异步和同步的概念是理解程序执行流程和性能优化的关键,这篇文章将带你深入了解它们的差异,以及阻塞和非阻塞的特性,同时通过实际... 目录python中的异步与同步:深度解析与实践异步与同步的定义异步同步阻塞与非阻塞的概念阻塞非阻塞同步