离散大创项目——图片识别笔记

1.我才知道a=input()读入的竟然是字符串。。。还要强制转化成int型,这玩意搞了我好久
2.对照片进行裁剪,将照片周围多余的白色部分去除(也就是让图像尽可能撑满整个框)
在这里插入图片描述
由上一张裁成下一张
在这里插入图片描述

from PIL import Image
import os
SCALE = 1
#等比例缩放def get_char(pixel, blank_char='0', fill_char='1'):return blank_char if pixel == 0 else fill_chardef shang():for i in range(width):for j in range(height):if im.getpixel((i, j)) == 0:return i
def xia():for i in reversed(range(width)):for j in range(height):if im.getpixel((i,j)) == 0:return idef zuo():for i in range(height):for j in range(width):if im.getpixel((j, i)) == 0:return i
def you():for i in reversed(range(height)):for j in range(width):if im.getpixel((j, i)) == 0:return iim = Image.open(r"C:\Users\DELL\Desktop\活动\离散大创\新建文件夹\gou.jpg")
size = im.size
#size[0]*size[1] 横宽像素
width, height = int(size[0] * SCALE), int(size[1] * SCALE)
im = im.resize((width, height))
im = im.convert('1')#print(width,height)
s=shang()
x=xia()
z=zuo()
y=you()
box=(s,z,x,y)
#s z x y
im = im.crop(box)
im.save("C:\\Users\\DELL\\Desktop\\活动\\离散大创\\图像库\\狗.png")
#800 645
#txt = ""
#im1 = Image.open(r"C:\Users\DELL\Desktop\活动\离散大创\新建文件夹\apple.png")#print(txt)
#f = open(r'gou.txt', 'w')#print(txt, file=f)#f.close()

其中的四个函数分别是定位上下左右的坐标,
im.paste(image,box)
将一张图粘贴到另一张图像上。变量box或者是一个给定左上角的2元组,或者是定义了左,上,右和下像素坐标的4元组,或者为空(与(0,0)一样)。如果给定4元组,被粘贴的图像的尺寸必须与区域尺寸一样。

im.crop()函数的参数形式是(x1, y1, x2, y2)这个元组是作为一个参数的

3.`
用以输出路径下的子目录

file_dir = r"C:\Users\DELL\Desktop\活动\离散大创\测试"
for root, dirs, files in os.walk(file_dir):print(files) #当前路径下所有子目录

打开指定文件夹下的指定文件

    img_path = 'C:\\Users\DELL\Desktop\活动\离散大创\图像库\\'img_list = os.listdir(r'C:\Users\DELL\Desktop\活动\离散大创\图像库')Ym = Image.open(img_path + img_list[i])

图像识别功能基本上已经实现,但是准确率等有待提高
而且使用优化方面尚且做的不足

from PIL import Image
import os
SCALE = 800#对比参数
#等比例缩放
SUM=6#数据库中数量def get_char(pixel, blank_char='0', fill_char='1'):return blank_char if pixel == 0 else fill_chardef shang(width,height):for i in range(width):for j in range(height):if im.getpixel((i, j)) == 0:return i
def xia(width,height):for i in reversed(range(width)):for j in range(height):if im.getpixel((i,j)) == 0:return idef zuo(width,height):for i in range(height):for j in range(width):if im.getpixel((j, i)) == 0:return i
def you(width,height):for i in reversed(range(height)):for j in range(width):if im.getpixel((j, i)) == 0:return i
def cmp():sum=0for i in range(SCALE):for j in range(SCALE):if ng.getpixel((i, j))==Ym.getpixel((i, j))==0:sum=sum+1return sumfile_dir = r"C:\Users\DELL\Desktop\活动\离散大创\测试"
for root, dirs, files in os.walk(file_dir):print(files) #当前路径下所有子目录img_path = 'C:\\Users\DELL\Desktop\活动\离散大创\测试\\'
img_list = os.listdir(r'C:\Users\DELL\Desktop\活动\离散大创\测试')
a=input("您要测试的照片编号:(从左到右编号从1依次增大)")
a=int(a)-1
im = Image.open(img_path + img_list[a])#读入你要测试的图片编号
size = im.size
#im.show()
#size[0]*size[1] 横宽像素
width, height = int(size[0]), int(size[1])
im = im.resize((width, height))
im = im.convert('1')
#print(width,height)
s=shang(width,height)
x=xia(width,height)
z=zuo(width,height)
y=you(width,height)
box=(s,z,x,y)
#s z x y
ng = im.crop(box)
#ng.save("C:\\Users\\DELL\\Desktop\\活动\\离散大创\\测试\\chuan1.png")
#ng.show()
pos=-1
MAXN=-1
for i in range(SUM):img_path = 'C:\\Users\DELL\Desktop\活动\离散大创\图像库\\'img_list = os.listdir(r'C:\Users\DELL\Desktop\活动\离散大创\图像库')Ym = Image.open(img_path + img_list[i])Ym.show()ng = ng.resize((SCALE,SCALE))Ym = Ym.resize((SCALE,SCALE))print("相似度为=",cmp())if i==0 or MAXN<cmp():#保存相似度最大的数据pos=iMAXN=cmp()
filedir = r"C:\Users\DELL\Desktop\活动\离散大创\图像库"
for root, dirs, files in os.walk(filedir):print("相似度最高的是第",pos+1,"个,为数据库中的图片",files[pos])
#800 645
#txt = ""
#im1 = Image.open(r"C:\Users\DELL\Desktop\活动\离散大创\新建文件夹\apple.png")#print(txt)
#f = open(r'gou.txt', 'w')#print(txt, file=f)#f.close()
#561 850 558 472 923 650
#253 372 252 257 85 259
# 417 365 621 476

测试结果
在这里插入图片描述

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

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

相关文章

最小割小记

参考博客&#xff1a;最小割浅谈 关于最小割 常用描述 表述一&#xff1a;删去若干条边使得源点到汇点不连通&#xff0c;求删边的权值和的最小可能值。 表述二&#xff1a;将点集分为(S,T)(S,T)(S,T)&#xff0c;记所有从SSS中出发到TTT中的边的权值和为c(S,T)c(S,T)c(S,T)&a…

斐波那契数列求法

文章目录求斐波那切数列的几个方法&#xff1a;经典做法&#xff1a;递推&#xff1a;动态规划矩阵快速幂原理&#xff1a;代码&#xff1a;例题&#xff1a;模拟过程求斐波那切数列的几个方法&#xff1a; 经典做法&#xff1a; 众所周知&#xff1a;斐波那契数列的定义是f(…

ASP.Net Core2.1中的HttpClientFactory系列一

引言&#xff1a;ASP.NET Core2.1 中出现了一个新的 HttpClientFactory 功能, 它有助于解决开发人员在使用 HttpClient 实例从其应用程序中访问外部 web 资源时可能遇到的一些常见问题。关于HttpClientFactory 到底解决了那些HttpClient的严重问题&#xff0c;下面是我罗列出来…

最大子矩阵(普通和01)

文章目录普通矩阵&#xff08;单个矩阵值为任何数&#xff09;最大子段和扩展到二维情况01矩阵&#xff08;单个矩阵值为0或1&#xff09;代码&#xff1a;普通矩阵&#xff08;单个矩阵值为任何数&#xff09; 例题&#xff1a;POJ 1074 求出其中最大的子矩阵 答案是&#x…

自动化流程开源框架BotSharp

BotSharp是一款为方便构建智能对话机器人平台而开发的开源框架&#xff0c;最大的特点是所有模型算法都是基于.NET Core开发实现&#xff0c;甚至最基本的Penn Treebank分词标准&#xff0c;都重新用C#实现了。在机器学习python占绝对优势的时代算是不可多得的项目。该项目涉及…

积极参与开源项目,促进.NET Core生态社区发展

今天早上在微信群里聊天聊到百度的SDK 已经支持.NET Core, 百度已经在3月份就支持了&#xff0c;想起当时还是我在他们的github上提的issue&#xff1a; https://github.com/Baidu-AIP/dotnet-sdk/issues/3。.NET Core生态社区的发展已经四年多时间&#xff0c;日趋完善&#x…

Service Fabric 与Ocelot 的集成

概要云应用程序通常都需要使用前端网关&#xff0c;为用户、设备或其他应用程序提供同一个入口点。 在 Service Fabric 中&#xff0c;网关可以是任意无状态服务&#xff08;如 ASP.NET Core 应用程序&#xff09; 。本文介绍了如何将Ocelot用作 Service Fabric 应用程序的网关…

图论复习——最短路

知识点 最短路径算法 最短路径树 每个点uuu的父亲为使uuu得到最短距离的前驱节点&#xff0c;若有多个&#xff0c;则取任意一个。 题目 CF449B Jzzhu and Cities Blog CF464E The Classic Problem Blog [XSY3888] 传送门 对每个点uuu&#xff0c;记d(u)d(u)d(u)表示uuu…

T-Dongle-S3开发笔记——创建工程

创建Hello world工程 打开命令面板 方法1&#xff1a;查看->命令面板 方法2&#xff1a;按F1 选择ESP-IDF:展示示例项目 创建helloworld 选择串口 选择芯片 至此可以编译下载运行了 运行后打印的信息显示flash只有2M。但是板子上电flash是W25Q32 4MB的吗 16M-bit

hdu 1576 A/B

文章目录题目&#xff1a;题解&#xff1a;代码&#xff1a;hdu 1576题目&#xff1a; 要求(A/B)%9973&#xff0c;但由于A很大&#xff0c;我们只给出n(nA%9973)(我们给定的A必能被B整除&#xff0c;且gcd(B,9973) 1)。 Input 数据的第一行是一个T&#xff0c;表示有T组数据。…

ASP.NET Core 中断请求了解一下(翻译)

本文所讲方式仅适用于托管在Kestrel Server中的应用。如果托管在IIS和IIS Express上时&#xff0c;ASP.NET Core Module(ANCM)并不会告诉ASP.NET Core在客户端断开连接时中止请求。但可喜的是&#xff0c;ANCM预计在.NET Core 2.2中会完善这一机制。1. 引言假设有一个耗时的Act…

.net core实践系列之短信服务-架构优化

前言通过前面的几篇文章&#xff0c;讲解了一个短信服务的架构设计与实现。然而初始方案并非100%完美的&#xff0c;我们仍可以对该架构做一些优化与调整。同时我也希望通过这篇文章与大家分享一下&#xff0c;我的架构设计理念。源码地址&#xff1a;https://github.com/SkyCh…

游戏 (博弈论)

https://blog.csdn.net/Mys_C_K/article/details/91443390

.NET Core中Object Pool的简单使用

前言复用&#xff0c;是一个重要的话题&#xff0c;也是我们日常开发中经常遇到的&#xff0c;不可避免的问题。举个最为简单&#xff0c;大家最为熟悉的例子&#xff0c;数据库连接池&#xff0c;就是复用数据库连接。那么复用的意义在那里呢&#xff1f;简单来说就是减少不必…

.Net Core应用框架Util介绍(三)

上篇.Net Core应用框架Util介绍&#xff08;二&#xff09;介绍了Util的开发环境&#xff0c;并让你把Demo运行起来。本文将介绍该Demo的前端Angular运行机制以及目录结构。目录结构在VS上打开Util Demo&#xff0c;会看见如下的目录结构。现代前端通常采用VS Code开发&#xf…

Ocelot简易教程(三)之主要特性及路由详解

作者&#xff1a;依乐祝原文地址&#xff1a;https://www.cnblogs.com/yilezhu/p/9664977.html上篇《Ocelot简易教程&#xff08;二&#xff09;之快速开始2》教大家如何快速跑起来一个ocelot实例项目&#xff0c;也只是简单的对Ocelot进行了配置&#xff0c;这篇文章会给大家详…

Poj 3070 Fibonacci

Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 26063 Accepted: 17394文章目录Description题意&#xff1a;题解&#xff1a;代码&#xff1a;Poj 3070 FibonacciDescription In the Fibonacci integer sequence, F0 0, F1 1, and Fn Fn − 1 Fn − 2 for…

生成函数化简技巧

一些重要式子 ∑i0∞xi11−x\sum_{i0}^{\infty}x^i\frac{1}{1-x}∑i0∞​xi1−x1​ 推论&#xff1a; 11−ax∑i0∞aixi\frac{1}{1-ax}\sum_{i0}^{\infty}a^ix^i1−ax1​∑i0∞​aixi 11−xk∑i0∞xik\frac{1}{1-x^k}\sum_{i0}^{\infty}x^{ik}1−xk1​∑i0∞​xik 11−cxk∑i0∞…

.NET西安社区 [拥抱开源,又见 .NET] 活动简报

拥抱开源, 又见 .NET」随着 .NET Core的发布和开源&#xff0c;.NET又重新回到了人们的视野。除了开源、跨平台、高性能以及优秀的语言特性&#xff0c;越来越多的第三方开源库也出现在了Github上——包括ML.NET机器学习、Xamarin移动开发平台、基于Actor模型的分布式框架Orlea…

dotnet core高吞吐Http api服务组件FastHttpApi

简介是dotNet core下基于Beetlex实现的一个高度精简化和高吞吐的HTTP API服务开源组件&#xff0c;它并没有完全实现HTTP SERVER的所有功能&#xff0c;而是只实现了在APP和WEB中提供数据服务最常用两个指令GET/SET&#xff0c;满足在应用实现JSON,PROTOBUF和MSGPACK等基于HTTP…