导航:首页 > 编程语言 > python读入的图片怎么缩放或移动

python读入的图片怎么缩放或移动

发布时间:2022-06-15 05:28:28

A. python中插入到turtle中背景图片太小

把不足部分填充一下。
程序拿到图片的时候,先获取一下尺寸信息,然后计算出来同比例缩放的尺寸,再把它不足部分填充起来,或者和一个纯色背景或者透明背景的规定尺寸图进行叠加。
它需要图片都是无背景图片,因为有背景的图片,你放什么颜色作为不足尺寸的描边都可能不合适。然后无背景图片根本就不需要做这个事情,直接放到批处理工具里面弄一下就行了。

B. 怎么用python实现一个坐标图的平移和缩放

最容易想到的应该是DP算法,即取初始轨迹的起点A和终点B连线,计算每个点到这条线的距离,距离最大的点C若小于要求误差则结束;
否则将C点加入压缩后的数据集,对AC和CB重复以上过程直至满足误差要求。

C. python 图片移动

#-*-coding:gbk-*-
importImage
importImageDraw
importImageChops

im=Image.new('RGB',(800,600),'white')
im2=Image.open('test.png')

#测试图放画布左边,画布右边底色涂黄
left=(im.size[0]/2-im2.size[0])/2
upper=(im.size[1]-im2.size[1])/2
im.paste(im2,(left,upper))
im.paste('yellow',(im.size[0]/2,0)+im.size)
im.show()

#因要旋转得计算测试图对角线,然后切出
d=int((im2.size[0]**2+im2.size[1]**2)**0.5)
left=(im.size[0]/2-d)/2
upper=(im.size[1]-d)/2
bbox=(left,upper,left+d,upper+d)
cp=im.crop(bbox)

#图底不是黑先做mask再作旋转,
#mask做法不一,按测试图可选取g或b通道
r,g,b=cp.split()
mask=g.point(lambdai:i<250and255)
angle=30
mask=mask.rotate(angle)
cp=cp.rotate(angle)

#利用mask贴在画布右边黄底区内
im.paste(cp,(left+im.size[0]/2,upper),mask)
im.show()

D. python的turtle怎样缩放界面吧

turtle.shapesize(5,5,12)

表示垂直方向缩放到原来为5倍,水平方向缩放到原来5倍,外轮廓宽度12

E. Python 读取文件夹将里面的图片处理成想要的大小并保存在个指定位置

#-*-coding:utf-8-*-
importcv2
importos
importnumpy
importcutHumanFace

defsaveCutFace(filePath,pathSave='cutFace',normalizeWidth=300,normalizeHeight=300):
"""
:paramfilePath:string,文件夹路径
"""

ifnotos.path.exists(savePath):
os.makedirs(savePath);#保存的文件夹

files=os.listdir(filePath);#列出目录下的所有文件

normalizeWidth=100#以100×100为大小
normalizeHeight=100
forfileinfiles:
normalizeFace=cv2.resize(cutFace,(normalizeWidth,normalizeHeight),interpolation=cv2.INTER_AREA);
cv2.imwrite(savePath,normalizeFace);

F. python PIL如何才能把图片修改成正方形或者任意尺寸而不产生挤压

使用裁剪(crop)

img.crop(0,0,w,h)

G. python中image怎样缩小图像

首先需要安装 PIL 库
然后 from PIL import Image
im = Image.open(pash)
im.thumbnail((new_width, new_hight))
im.save(path)

H. python处理图片数据

目录

1.机器是如何存储图像的?

2.在Python中读取图像数据

3.从图像数据中提取特征的方法#1:灰度像素值特征

4.从图像数据中提取特征的方法#2:通道的平均像素值

5.从图像数据中提取特征的方法#3:提取边缘
是一张数字8的图像,仔细观察就会发现,图像是由小方格组成的。这些小方格被称为像素。

但是要注意,人们是以视觉的形式观察图像的,可以轻松区分边缘和颜色,从而识别图片中的内容。然而机器很难做到这一点,它们以数字的形式存储图像。请看下图:

机器以数字矩阵的形式储存图像,矩阵大小取决于任意给定图像的像素数。

假设图像的尺寸为180 x 200或n x m,这些尺寸基本上是图像中的像素数(高x宽)。

这些数字或像素值表示像素的强度或亮度,较小的数字(接近0)表示黑色,较大的数字(接近255)表示白色。通过分析下面的图像,读者就会弄懂到目前为止所学到的知识。

下图的尺寸为22 x 16,读者可以通过计算像素数来验证:

图片源于机器学习应用课程

刚才讨论的例子是黑白图像,如果是生活中更为普遍的彩色呢?你是否认为彩色图像也以2D矩阵的形式存储?

彩色图像通常由多种颜色组成,几乎所有颜色都可以从三原色(红色,绿色和蓝色)生成。

因此,如果是彩色图像,则要用到三个矩阵(或通道)——红、绿、蓝。每个矩阵值介于0到255之间,表示该像素的颜色强度。观察下图来理解这个概念:

图片源于机器学习应用课程

左边有一幅彩色图像(人类可以看到),而在右边,红绿蓝三个颜色通道对应三个矩阵,叠加三个通道以形成彩色图像。

请注意,由于原始矩阵非常大且可视化难度较高,因此这些不是给定图像的原始像素值。此外,还可以用各种其他的格式来存储图像,RGB是最受欢迎的,所以笔者放到这里。读者可以在此处阅读更多关于其他流行格式的信息。

用Python读取图像数据

下面开始将理论知识付诸实践。启动Python并加载图像以观察矩阵:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
from skimage.io import imread, imshow
image = imread('image_8_original.png', as_gray=True)
imshow(image)

#checking image shape
image.shape, image

(28,28)

矩阵有784个值,而且这只是整个矩阵的一小部分。用一个LIVE编码窗口,不用离开本文就可以运行上述所有代码并查看结果。

下面来深入探讨本文背后的核心思想,并探索使用像素值作为特征的各种方法。

方法#1:灰度像素值特征

从图像创建特征最简单的方法就是将原始的像素用作单独的特征。

考虑相同的示例,就是上面那张图(数字‘8’),图像尺寸为28×28。

能猜出这张图片的特征数量吗?答案是与像素数相同!也就是有784个。

那么问题来了,如何安排这784个像素作为特征呢?这样,可以简单地依次追加每个像素值从而生成特征向量。如下图所示:

下面来用Python绘制图像,并为该图像创建这些特征:

image = imread('puppy.jpeg', as_gray=True)

image.shape, imshow(image)

(650,450)

该图像尺寸为650×450,因此特征数量应为297,000。可以使用NumPy中的reshape函数生成,在其中指定图像尺寸:

#pixel features

features = np.reshape(image, (660*450))

features.shape, features

(297000,)
array([0.96470588, 0.96470588, 0.96470588, ..., 0.96862745, 0.96470588,
0.96470588])

这里就得到了特征——长度为297,000的一维数组。很简单吧?在实时编码窗口中尝试使用此方法提取特征。

但结果只有一个通道或灰度图像,对于彩色图像是否也可以这样呢?来看看吧!

方法#2:通道的平均像素值

在读取上一节中的图像时,设置了参数‘as_gray = True’,因此在图像中只有一个通道,可以轻松附加像素值。下面删除参数并再次加载图像:

image = imread('puppy.jpeg')
image.shape

(660, 450, 3)

这次,图像尺寸为(660,450,3),其中3为通道数量。可以像之前一样继续创建特征,此时特征数量将是660*450*3 = 891,000。

或者,可以使用另一种方法:

生成一个新矩阵,这个矩阵具有来自三个通道的像素平均值,而不是分别使用三个通道中的像素值。

下图可以让读者更清楚地了解这一思路:

这样一来,特征数量保持不变,并且还能考虑来自图像全部三个通道的像素值。

image = imread('puppy.jpeg')
feature_matrix = np.zeros((660,450))
feature_matrix.shape

(660, 450)

现有一个尺寸为(660×450×3)的三维矩阵,其中660为高度,450为宽度,3是通道数。为获取平均像素值,要使用for循环:

for i in range(0,iimage.shape[0]):
for j in range(0,image.shape[1]):
feature_matrix[i][j] = ((int(image[i,j,0]) + int(image[i,j,1]) + int(image[i,j,2]))/3)

新矩阵具有相同的高度和宽度,但只有一个通道。现在,可以按照与上一节相同的步骤进行操作。依次附加像素值以获得一维数组:

features = np.reshape(feature_matrix, (660*450))
features.shape

(297000,)

方法#3:提取边缘特征

请思考,在下图中,如何识别其中存在的对象:

识别出图中的对象很容易——狗、汽车、还有猫,那么在区分的时候要考虑哪些特征呢?形状是一个重要因素,其次是颜色,或者大小。如果机器也能像这样识别形状会怎么样?

类似的想法是提取边缘作为特征并将其作为模型的输入。稍微考虑一下,要如何识别图像中的边缘呢?边缘一般都是颜色急剧变化的地方,请看下图:

笔者在这里突出了两个边缘。这两处边缘之所以可以被识别是因为在图中,可以分别看到颜色从白色变为棕色,或者由棕色变为黑色。如你所知,图像以数字的形式表示,因此就要寻找哪些像素值发生了剧烈变化。

假设图像矩阵如下:

图片源于机器学习应用课程

该像素两侧的像素值差异很大,于是可以得出结论,该像素处存在显着的转变,因此其为边缘。现在问题又来了,是否一定要手动执行此步骤?

当然不!有各种可用于突出显示图像边缘的内核,刚才讨论的方法也可以使用Prewitt内核(在x方向上)来实现。以下是Prewitt内核:

获取所选像素周围的值,并将其与所选内核(Prewitt内核)相乘,然后可以添加结果值以获得最终值。由于±1已经分别存在于两列之中,因此添加这些值就相当于获取差异。

还有其他各种内核,下面是四种最常用的内核:

图片源于机器学习应用课程

现在回到笔记本,为同一图像生成边缘特征:

#importing the required libraries
import numpy as np
from skimage.io import imread, imshow
from skimage.filters import prewitt_h,prewitt_v
import matplotlib.pyplot as plt
%matplotlib inline

#reading the image
image = imread('puppy.jpeg',as_gray=True)

#calculating horizontal edges using prewitt kernel
edges_prewitt_horizontal = prewitt_h(image)
#calculating vertical edges using prewitt kernel
edges_prewitt_vertical = prewitt_v(image)

imshow(edges_prewitt_vertical, cmap='gray')

I. python中PLE调整图片大小,等比例压缩文件,怎么写代码

How do I read image data from a URL in Python?

importosimportImagefileName='c:/py/jb51.jpg'fp=open(fileName,'rb')im=Image.open(fp)fp.close()x,y=im.sizeifx <300or y <300:os.remove(fileName)

from PIL import Imageimport requestsimport numpy as npfrom StringIO import StringIOresponse = requests.get(url)img = np.array(Image.open(StringIO(response.content)))

from PIL import Imageimport urllib2

im = Image.open(urllib2.urlopen(url))

or if you userequests:

from PIL import Imageimport requests

im = Image.open(requests.get(url, stream=True).raw)

[python] view plain

J. 请教一下大神如何用python读取图片的txt标签内容并将图片及对应标签移动至指定文件夹

import os
def search(s, path=os.path.abspath('.')):
for z in os.listdir(path):
if os.path.isdir(path + os.path.sep + z):
print('Currnet:', path)
path2 = os.path.join(path, z)
print('future:', path2)
search(s, path2)
elif os.path.isfile(path + os.path.sep + z):
if s in z:
print(os.path.join(path, z))
with open(path + os.path.sep + z, 'r') as fr:
with open('save.txt', 'a') as fw:
fw.write(path + '\t' + fr.read())
search('csv', '.')

阅读全文

与python读入的图片怎么缩放或移动相关的资料

热点内容
可以在安卓平板上画画的软件是什么 浏览:436
高盛数字加密 浏览:895
软着网上能不能查到自己的源码 浏览:914
编译好的android源码 浏览:993
学校机房云服务器和电脑主机 浏览:10
Python红色五角星画法 浏览:337
压缩饼干翻译 浏览:686
macos命令行窗口的样式 浏览:248
androidflipboard 浏览:878
投资公司投资源码 浏览:75
python语料训练 浏览:338
武夷岩茶产地溯源码 浏览:383
求生组队用什么服务器最好 浏览:24
php回调匿名回调函数 浏览:107
源码翻译软件哪里找 浏览:523
邪恶程序员解说 浏览:600
医生找程序员 浏览:423
cad三维剖切命令 浏览:55
压缩机的气能流多远 浏览:85
linuxfdiskt 浏览:696