当前位置:首页 » 编程语言 » pythonim

pythonim

发布时间: 2022-05-19 08:26:05

⑴ 在python Image中可以用show()来显示图片,但是显示以后,下面的代码就不运行了,如何运行下面的代码

Image.show()函数是这个样子的,必须先关了图片程序才往下走。

不使用show,如imshow(BW)在 Matlab 7.0 中,二进制图像是一个逻辑类,仅包括 0 和 1 两个数值。像素 0 显示为黑色,像素 1 显示为白色。显示时,也可通过NOT(~)命令,对二进制图象进行取反,使数值 0 显示为白色;1 显示为黑色。

例如: imshow(~BW)

展资料:

不使用show函数来满足运行的需求:

import threading

import Image

class ThreadClass(threading.Thread):

def run(self):

im=Image.open('z.jpg')

im.show()

print (1)

t = ThreadClass()

t.start()

print (2)

a=input('End')

#===============================

图像的表示原理:

最基本的物理图像是根据矩形网格抽样原理从连续图像域中抽取二维灰度阵列(矩阵)得到的。也可以用长向量表示二维灰度矩阵,它是按列(或行)扫描灰度矩阵,把下一列(或行)的头和前一列(或行)的尾相接而成。

它们的线性可逆变换同样可以用来表示图像。图像的每一行由行程(具有同一灰度的邻近像元集合)序列所组成,因此也可以用行程长度编码(见图像编码)表示图像。

⑵ Python程序抓图 怎么用程序实现截图

由于在我的一个程序中想要添加一个截图功能,今天看一下利用Python怎样截图,功能实现都挺简单了,直接上代码
from
PIL
import
ImageGrab
im
=
ImageGrab.grab()
im.save(addr,'jpeg')
很简单的几行代码就实现了我要的功能,PIL(Python
Image
Library)是Python的一个图形库,需要自己下载安装,im
=
ImageGrab.grab()这行代码实现截图功能,可以带参数,指定要截取图片的坐标位置,不带参数默认全屏截图,im.save(addr,'jpeg')是保存截取的图片,第一个参数是保存路径,第二个参数是图片格式

⑶ python PIL的问题

我能想的的是,不用 Image.open("XXXX")读文件,因为会有之后的惰性操作,
改用ImageFile从另一个open的图片文件中读到内存里面,读完也可以删除原文件
import ImageFile
fp = open("1.png", "rb")
p = ImageFile.Parser()
while 1:
s = fp.read(1024)
if not s:
break
p.feed(s)
im = p.close()
im.save(".jpg")

⑷ python 正则表达式提取字典中的imUrl的value值

对于你给的字符串,可以被看作一个字典,所以可以按照键值来提取imUrl的value值,也可以用正则表达式提取imUrl的value值.

两种方法我都写出来了,你看看吧,要用哪种方法,你自己决定.(因为回答问题不能出现链接,所以我把imUrl的value值改成了'imUrl链接',意思是一样的)

第一种方法

data={'asin': '0000037214', 'related': {'also_viewed': ['B00JO8II76', 'B00DGN4R1Q', 'B00E1YRI4C']}, 'title': 'Purple Sequin Tiny Dancer Tutu Ballet Dance Fairy Princess Costume Accessory', 'price': 6.99, 'salesRank': {'Clothing': 1233557}, 'imUrl': 'imUrl链接', 'brand': 'Big Dreams','categories': [['Clothing, Shoes & Jewelry', 'Girls'], ['Clothing, Shoes & Jewelry', 'Novelty, Costumes & More', 'Costumes & Accessories', 'More Accessories', 'Kids & Baby']]}

print(data['imUrl'])

源代码(注意源代码的缩进)

⑸ python页面静态化可以用什么方法有哪些

主要特点就是需要绑定到一个对象上,python解析器会自动把实例自身传递给方法,如14行所示,而直接使用InstanceMethod.f1()调用方法是不行的。

class InstanceMethod(object):
def __init__(self, a):
self.a = a
def f1(self):
print 'This is {0}.'.format(self)
def f2(self, a):
print 'Value:{0}'.format(a)
if __name__ == '__main__':
# im = InstanceMethod()
im = InstanceMethod('233')
im.f1()
# im.f2()
im.f2(233)

⑹ python 验证码 阈值有什么用

看上去不怎么难,没有干扰线没有粘连没有扭曲.但我还是没能用pytesser直接将它识别出来,因为当中有噪点和其他背景噪声的存在.我的工作就是去掉这些讨厌的东西
先介绍一下,我们的工具:
1.Pytesser它是基于一个c语言实现名为tesser的识别工具的python封装.可惜比较笨,只能做最简单的识别而且不认识汉字
2.Requests它是我们喜欢写爬虫的孩子的最爱,提供人性化的接口,代价是失去了一点效率(写python就别考虑效率啦)
3.BeautifulSoup它和Requests是一对好机油,让提取文档中所需的内容变成一件简单的事情
4.PIL它是今天的主角,PIL是专门用作图像处理的库,很好很强大.熟练的人甚至可以用它来P图
如何写爬虫去实现模拟登录此处不细说,下面说说怎么解决验证码识别
解决思路如下:
1.先用PIL对图像做一次图像增强,因为原图中数字的边缘和背景中的噪声并不是太分明,做了增强之后能将两者分离.如果不分离,可能会在去噪点的时候导致数字中有部分会缺失
im = Image.open("randomimage/randomImage11.jpg")
im = ImageEnhance.Sharpness(im).enhance(3)参数为3是经过实验之后感觉比较理想的值,太强不好,太弱也不好
2.做完预处理之后,就是去背景噪声了.背景噪声指的是背景中各种明暗变换的色块,肉眼也许不会注意到这个.但是它的存在会给识别带来影响.我最初的做法是将图像转换为只有黑白两色,这样自然就将噪声转换成了噪点.
效果如图
但我希望能去掉噪点,成为这样

最先想到的是种子染色法 ,什么是种子染色法请参看这个链接
为了防止坏链,此处做部分转载
种子染色法英文叫做Flood Fill ,实际上Flood Fill这个名称更贴切一点,因为这个方法作用在一个图的结点上时恰似洪水一样“淹没”与之相连的其他结点并以相同的方式蔓延出去,这个方法通常用于计算一个图的极大连通子图(这里的“图”是图论的概念)。设想一个无向图,我们从这个图中一个未标号(“标号”可以理解为“染色”)的结点开始,将此结点和从这个结点出发可达的所有结点都赋予相同的标号(染上相同的颜色),那么我们就得到了这些被标号的结点所组成的一个极大连通子图,搜索下一个未标号的结点并重复上述过程我们便可以找到所有的极大连通子图。“染色”的过程可以用DFS或者BFS实现,如果结点数为V,边数为E,因为我们在Flood Fill过程中“造访”每个结点两次,“造访”每条边两次,所以得到所有极大连通子图的时间复杂度为o(V+E) 。
来自Wikipedia的一个示例:

想象每个白色方块为图中的结点,相邻的方块(上下左右)有边相连,那么这个图就有三个极大连通子图,这演示了Flood Fill查找其中一个极大连通子图的过程。
在这是借要用种子染色法计算每块的面积,然后把小体积的块当作噪点去除.
代码在这

def check(j,i):
try:
if pix[j,i] == 0 and matrix[j][i] != -1:
return True
else:
return False
except:
return False

def juli(r,s):
return abs(r[0]-s[0])+abs(r[1]-s[1])+abs(r[2]-s[2])

for i in range(w):
for j in range(h):
r = [0,0,0]
s = [0,0,0]
if pix[j,i] == 0:
if check(j-1,i):
r[0],r[1],r[2] = im2.getpixel((j,i))
s[0],s[1],s[2] = im2.getpixel((j-1,i))
print r
print s
print "-"*55
if juli(r,s) <=l:
matrix[j][i] = matrix[j-1][i]
maps[str(matrix[j][i])]+=1
elif check(j-1,i-1):
r[0],r[1],r[2] = im2.getpixel((j,i))
s[0],s[1],s[2] = im2.getpixel((j-1,i-1))
if juli(r,s) <=l:
matrix[j][i] = matrix[j-1][i-1]
maps[str(matrix[j][i])]+=1
elif check(j,i-1):
r[0],r[1],r[2] = im2.getpixel((j,i))
s[0],s[1],s[2] = im2.getpixel((j-1,i))
if juli(r,s) <=l:
matrix[j][i] = matrix[j][i-1]
maps[str(matrix[j][i])]+=1
elif check(j+1,i+1):
r[0],r[1],r[2] = im2.getpixel((j,i))
s[0],s[1],s[2] = im2.getpixel((j+1,i+1))
if juli(r,s) <=l:
matrix[j][i] = matrix[j+1][i+1]
maps[str(matrix[j][i])]+=1
elif check(j,i+1):
r[0],r[1],r[2] = im2.getpixel((j,i))
s[0],s[1],s[2] = im2.getpixel((j,i+1))
if juli(r,s) <=l:
matrix[j][i] = matrix[j][i+1]
maps[str(matrix[j][i])]+=1
elif check(j-1,i+1):
pr[0],r[1],r[2] = im2.getpixel((j,i))
s[0],s[1],s[2] = im2.getpixel((j-1,i+1))
if juli(r,s) <=l:
matrix[j][i] = matrix[j-1][i+1]
maps[str(matrix[j][i])]+=1
elif check(j+1,i-1):
r[0],r[1],r[2] = im2.getpixel((j,i))
s[0],s[1],s[2] = im2.getpixel((j+1,i-1))
if juli(r,s) <=l:
matrix[j][i] = matrix[j+1][i-1]
maps[str(matrix[j][i])]+=1
elif check(j+1,i):
r[0],r[1],r[2] = im2.getpixel((j,i))
s[0],s[1],s[2] = im2.getpixel((j+1,i))
if juli(r,s) <=l:
matrix[j][i] = matrix[j+1][i]
maps[str(matrix[j][i])]+=1
else:
n+=1
maps[str(n)]=1
matrix[j][i] = n
for i in range(w):
for j in range(h):
if matrix[j][i]!=-1 and maps[str(matrix[j][i])]<=2:
im.putpixel((j,i),255)View Code

结果呢,不是很理想因为这个体积参数设小了,噪点没去干净,设大了数字部分可能也去了一小块.最重要的是这里噪点的大小不是很规律,很难找到一个不错的面积参数.
失败只是暂时的,经过观察发现背景噪声颜色明显比数字要浅的多.这也意味着它的RGB值要比数字小的多,通过分析RGB值能去掉大部分噪声,剩下来的噪点可以再通过种子染色法处理.也就是说,分别在两张图片(分别是黑白和彩色)上获取信息,在一张图片上做处理最后做识别
核心代码在这
r[0],r[1],r[2] = im2.getpixel((j,i))
if r[0]+r[1]+r[2]>=400 or r[0]>=250 or r[1]>=250 or r[2]>=250 :
im2.putpixel((j,i),(255,255,255)) 至此,本次识别的问题就搞定啦,成功率在50%以上基本满足接口的需求

⑺ python中im.size[0]和im.size[1]是什么意思

classIM(object):
size=[1,2,3,4]

im=IM()
print(im.size[0])#1
print(im.size[1])#2

⑻ python图像处理初学者求助

Pillow是Python里的图像处理库(PIL:Python Image Library),提供了了广泛的文件格式支持,强大的图像处理能力,主要包括图像储存、图像显示、格式转换以及基本的图像处理操作等。
1)使用 Image 类
PIL最重要的类是 Image class, 你可以通过多种方法创建这个类的实例;你可以从文件加载图像,或者处理其他图像, 或者从 scratch 创建。
要从文件加载图像,可以使用open( )函数,在Image模块中:

1
2

>>> from PIL import Image
>>> im = Image.open("E:/photoshop/1.jpg")

加载成功后,将返回一个Image对象,可以通过使用示例属性查看文件内容:

1
2
3

>>> print(im.format, im.size, im.mode)
('JPEG', (600, 351), 'RGB')
>>>

format 这个属性标识了图像来源。如果图像不是从文件读取它的值就是None。size属性是一个二元tuple,包含width和height(宽度和高度,单位都是px)。 mode 属性定义了图像bands的数量和名称,以及像素类型和深度。常见的modes 有 “L” (luminance) 表示灰度图像, “RGB” 表示真彩色图像, and “CMYK” 表示出版图像。
如果文件打开错误,返回 IOError 错误。
只要你有了 Image 类的实例,你就可以通过类的方法处理图像。比如,下列方法可以显示图像:

1

im.show()

2)读写图像
PIL 模块支持大量图片格式。使用在 Image 模块的 open() 函数从磁盘读取文件。你不需要知道文件格式就能打开它,这个库能够根据文件内容自动确定文件格式。要保存文件,使用 Image 类的 save() 方法。保存文件的时候文件名变得重要了。除非你指定格式,否则这个库将会以文件名的扩展名作为格式保存。
加载文件,并转化为png格式:

1
2
3
4
5
6
7
8
9
10
11
12
13

"Python Image Library Test"
from PIL import Image
import os
import sys

for infile in sys.argv[1:]:
f,e = os.path.splitext(infile)
outfile = f +".png"
if infile != outfile:
try:
Image.open(infile).save(outfile)
except IOError:
print("Cannot convert", infile)

save() 方法的第二个参数可以指定文件格式。
3)创建缩略图
缩略图是网络开发或图像软件预览常用的一种基本技术,使用Python的Pillow图像库可以很方便的建立缩略图,如下:

1
2
3
4
5
6
7

# create thumbnail
size = (128,128)
for infile in glob.glob("E:/photoshop/*.jpg"):
f, ext = os.path.splitext(infile)
img = Image.open(infile)
img.thumbnail(size,Image.ANTIALIAS)
img.save(f+".thumbnail","JPEG")

上段代码对photoshop下的jpg图像文件全部创建缩略图,并保存,glob模块是一种智能化的文件名匹配技术,在批图像处理中经常会用到。
注意:Pillow库不会直接解码或者加载图像栅格数据。当你打开一个文件,只会读取文件头信息用来确定格式,颜色模式,大小等等,文件的剩余部分不会主动处理。这意味着打开一个图像文件的操作十分快速,跟图片大小和压缩方式无关。
4)图像的剪切、粘贴与合并操作
Image 类包含的方法允许你操作图像部分选区,PIL.Image.Image.crop 方法获取图像的一个子矩形选区,如:

1
2
3
4

# crop, paste and merge
im = Image.open("E:/photoshop/lena.jpg")
box = (100,100,300,300)
region = im.crop(box)

矩形选区有一个4元元组定义,分别表示左、上、右、下的坐标。这个库以左上角为坐标原点,单位是px,所以上诉代码复制了一个 200×200 pixels 的矩形选区。这个选区现在可以被处理并且粘贴到原图。

1
2

region = region.transpose(Image.ROTATE_180)
im.paste(region, box)

当你粘贴矩形选区的时候必须保证尺寸一致。此外,矩形选区不能在图像外。然而你不必保证矩形选区和原图的颜色模式一致,因为矩形选区会被自动转换颜色。
5)分离和合并颜色通道
对于多通道图像,有时候在处理时希望能够分别对每个通道处理,处理完成后重新合成多通道,在Pillow中,很简单,如下:

1
2

r,g,b = im.split()
im = Image.merge("RGB", (r,g,b))

对于split( )函数,如果是单通道的,则返回其本身,否则,返回各个通道。
6)几何变换
对图像进行几何变换是一种基本处理,在Pillow中包括resize( )和rotate( ),如用法如下:

1
2

out = im.resize((128,128))
out = im.rotate(45) # degree conter-clockwise

其中,resize( )函数的参数是一个新图像大小的元祖,而rotate( )则需要输入顺时针的旋转角度。在Pillow中,对于一些常见的旋转作了专门的定义:

1
2
3
4
5

out = im.transpose(Image.FLIP_LEFT_RIGHT)
out = im.transpose(Image.FLIP_TOP_BOTTOM)
out = im.transpose(Image.ROTATE_90)
out = im.transpose(Image.ROTATE_180)
out = im.transpose(Image.ROTATE_270)

7)颜色空间变换
在处理图像时,根据需要进行颜色空间的转换,如将彩色转换为灰度:

1
2

cmyk = im.convert("CMYK")
gray = im.convert("L")

8)图像滤波

⑼ 什么是维纳滤波,对于python里的函数scipy.signal.wiener(im,mysize

文档很细致啊。
im : ndarray
An N-dimensional array.
mysize : int or arraylike, optional
A scalar or an N-length list giving the size of the Wiener filter window in each dimension. Elements of mysize should be odd. If mysize is a scalar, then this scalar is used as the size in each dimension.
noise : float, optional
The noise-power to use. If None, then noise is estimated as the average of the local variance of the input.

⑽ Python如何图像识别

首先,先定位好问题是属于图像识别任务中的哪一类,最好上传一张植物叶子的图片。因为目前基于深度学习的卷积神经网络(CNN)确实在图像识别任务中取得很好的效果,深度学习属于机器学习,其研究的范式,或者说处理图像的步骤大体上是一致的。

1、第一步,准备好数据集,这里是指,需要知道输入、输出(视任务而定,针对你这个问题,建议使用有监督模型)是什么。你可以准备一个文件夹,里面存放好植物叶子的图像,而每张图像对应一个标签(有病/没病,或者是多类别标签,可能具体到哪一种病)。
具体实现中,会将数据集分为三个:训练集(计算模型参数)、验证集(调参,这个经常可以不需要实现划分,在python中可以用scikit-learn中的函数解决。测试集用于验证模型的效果,与前面两个的区别是,模型使用训练集和验证集时,是同时使用了输入数据和标签,而在测试阶段,模型是用输入+模型参数,得到的预测与真实标签进行对比,进而评估效果。
2、确定图像识别的任务是什么?

图像识别的任务可以分为四个:图像分类、目标检测、语义分割、实例分割,有时候是几个任务的结合。
图像分类是指以图像为输入,输出对该图像内容分类的描述,可以是多分类问题,比如猫狗识别。通过足够的训练数据(猫和狗的照片-标签,当然现在也有一系列的方法可以做小样本训练,这是细节了,这里并不敞开讲),让计算机/模型输出这张图片是猫或者狗,及其概率。当然,如果你的训练数据还有其它动物,也是可以的,那就是图像多分类问题。
目标检测指将图像或者视频中的目标与不感兴趣的部分区分开,判断是否存在目标,并确定目标的具体位置。比如,想要确定这只狗所佩戴的眼睛的位置,输入一张图片,输出眼睛的位置(可视化后可以讲目标区域框出来)。

看到这里,应该想想植物叶子诊断疾病的问题,只需要输入一整张植物叶子的图片,输出是哪种疾病,还是需要先提取叶子上某些感兴趣区域(可能是病变区域),在用病变区域的特征,对应到具体的疾病?
语义分割是当今计算机视觉领域的关键问题之一,宏观上看,语义分割是一项高层次的任务。其目的是以一些原始图像作为输入,输出具有突出显示的感兴趣的掩膜,其实质上是实现了像素级分类。对于输入图片,输出其舌头区域(注意可以是不规则的,甚至不连续的)。

而实例分割,可以说是在语义分割的基础上,在像素层面给出属于每个实例的像素。

看到这里,可以具体思考下自己的问题是对应其中的哪一类问题,或者是需要几种任务的结合。

3、实际操作
可以先通过一个简单的例子入手,先了解构建这一个框架需要准备什么。手写数字识别可以说是深度学习的入门数据集,其任务也经常作为该领域入门的案例,也可以自己在网上寻找。

热点内容
idle运行python文件 发布:2025-05-15 17:12:19 浏览:231
主存储器属于外存储器吗 发布:2025-05-15 16:54:00 浏览:755
显示屏看股票都有哪些配置 发布:2025-05-15 16:52:39 浏览:397
android行情 发布:2025-05-15 16:52:25 浏览:438
活动上线前服务器配置要注意什么 发布:2025-05-15 16:38:43 浏览:949
王者荣耀安卓区怎么免费转苹果 发布:2025-05-15 16:18:02 浏览:763
威朗pro高配都有哪些配置 发布:2025-05-15 15:57:09 浏览:958
数据库分页查询数据 发布:2025-05-15 15:45:13 浏览:522
phpmyadmin上传限制 发布:2025-05-15 15:39:52 浏览:432
如何给手机配置真正的电脑 发布:2025-05-15 15:39:52 浏览:765