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开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示

python多线程并发测试过程

《python多线程并发测试过程》:本文主要介绍python多线程并发测试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、并发与并行?二、同步与异步的概念?三、线程与进程的区别?需求1:多线程执行不同任务需求2:多线程执行相同任务总结一、并发与并行?1、

Python处理大量Excel文件的十个技巧分享

《Python处理大量Excel文件的十个技巧分享》每天被大量Excel文件折磨的你看过来!这是一份Python程序员整理的实用技巧,不说废话,直接上干货,文章通过代码示例讲解的非常详细,需要的朋友可... 目录一、批量读取多个Excel文件二、选择性读取工作表和列三、自动调整格式和样式四、智能数据清洗五、

python操作redis基础

《python操作redis基础》Redis(RemoteDictionaryServer)是一个开源的、基于内存的键值对(Key-Value)存储系统,它通常用作数据库、缓存和消息代理,这篇文章... 目录1. Redis 简介2. 前提条件3. 安装 python Redis 客户端库4. 连接到 Re

Python+PyQt5实现MySQL数据库备份神器

《Python+PyQt5实现MySQL数据库备份神器》在数据库管理工作中,定期备份是确保数据安全的重要措施,本文将介绍如何使用Python+PyQt5开发一个高颜值,多功能的MySQL数据库备份工具... 目录概述功能特性核心功能矩阵特色功能界面展示主界面设计动态效果演示使用教程环境准备操作流程代码深度解

如何Python使用设置word的页边距

《如何Python使用设置word的页边距》在编写或处理Word文档的过程中,页边距是一个不可忽视的排版要素,本文将介绍如何使用Python设置Word文档中各个节的页边距,需要的可以参考下... 目录操作步骤代码示例页边距单位说明应用场景与高级用China编程途小结在编写或处理Word文档的过程中,页边距是一个

Python Flask 库及应用场景

《PythonFlask库及应用场景》Flask是Python生态中​轻量级且高度灵活的Web开发框架,基于WerkzeugWSGI工具库和Jinja2模板引擎构建,下面给大家介绍PythonFl... 目录一、Flask 库简介二、核心组件与架构三、常用函数与核心操作 ​1. 基础应用搭建​2. 路由与参

利用Python实现时间序列动量策略

《利用Python实现时间序列动量策略》时间序列动量策略作为量化交易领域中最为持久且被深入研究的策略类型之一,其核心理念相对简明:对于显示上升趋势的资产建立多头头寸,对于呈现下降趋势的资产建立空头头寸... 目录引言传统策略面临的风险管理挑战波动率调整机制:实现风险标准化策略实施的技术细节波动率调整的战略价

使用Python和Tkinter实现html标签去除工具

《使用Python和Tkinter实现html标签去除工具》本文介绍用Python和Tkinter开发的HTML标签去除工具,支持去除HTML标签、转义实体并输出纯文本,提供图形界面操作及复制功能,需... 目录html 标签去除工具功能介绍创作过程1. 技术选型2. 核心实现逻辑3. 用户体验增强如何运行

Python如何判断字符串中是否包含特殊字符并替换

《Python如何判断字符串中是否包含特殊字符并替换》这篇文章主要为大家详细介绍了如何使用Python实现判断字符串中是否包含特殊字符并使用空字符串替换掉,文中的示例代码讲解详细,感兴趣的小伙伴可以了... 目录python判断字符串中是否包含特殊字符方法一:使用正则表达式方法二:手动检查特定字符Pytho