python圖片與
-1 and 1是求真值,非零代表真,0代表假,結果是1,
d/100 %9 = 241/100 % 9 = 2.41 %9,這是求余數,答案是2。
② 怎麼用python顯示一張圖片
在 python 中除了用 opencv,也可以用 matplotlib 和 PIL 這兩個庫操作圖片。本人偏愛 matpoltlib,因為它的語法更像 matlab。
一、matplotlib
1. 顯示圖片
復制代碼
import matplotlib.pyplot as plt # plt 用於顯示圖片
import matplotlib.image as mpimg # mpimg 用於讀取圖片
import numpy as np
lena = mpimg.imread('lena.png') # 讀取和代碼處於同一目錄下的 lena.png
# 此時 lena 就已經是一個 np.array 了,可以對它進行任意處理
lena.shape #(512, 512, 3)
plt.imshow(lena) # 顯示圖片
plt.axis('off') # 不顯示坐標軸
plt.show()
復制代碼
2. 顯示某個通道
復制代碼
# 顯示圖片的第一個通道
lena_1 = lena[:,:,0]
plt.imshow('lena_1')
plt.show()
# 此時會發現顯示的是熱量圖,不是我們預想的灰度圖,可以添加 cmap 參數,有如下幾種添加方法:
plt.imshow('lena_1', cmap='Greys_r')
plt.show()
img = plt.imshow('lena_1')
img.set_cmap('gray') # 'hot' 是熱量圖
plt.show()
復制代碼
3. 將 RGB 轉為灰度圖
matplotlib 中沒有合適的函數可以將 RGB 圖轉換為灰度圖,可以根據公式自定義一個:
復制代碼
def rgb2gray(rgb):
return np.dot(rgb[...,:3], [0.299, 0.587, 0.114])
gray = rgb2gray(lena)
# 也可以用 plt.imshow(gray, cmap = plt.get_cmap('gray'))
plt.imshow(gray, cmap='Greys_r')
plt.axis('off')
plt.show()
復制代碼
4. 對圖像進行放縮
這里要用到 scipy
復制代碼
from scipy import misc
lena_new_sz = misc.imresize(lena, 0.5) # 第二個參數如果是整數,則為百分比,如果是tuple,則為輸出圖像的尺寸
plt.imshow(lena_new_sz)
plt.axis('off')
plt.show()
復制代碼
5. 保存圖像
5.1 保存 matplotlib 畫出的圖像
該方法適用於保存任何 matplotlib 畫出的圖像,相當於一個 screencapture。
plt.imshow(lena_new_sz)
plt.axis('off')
plt.savefig('lena_new_sz.png')
5.2 將 array 保存為圖像
from scipy import misc
misc.imsave('lena_new_sz.png', lena_new_sz)
5.3 直接保存 array
讀取之後還是可以按照前面顯示數組的方法對圖像進行顯示,這種方法完全不會對圖像質量造成損失
np.save('lena_new_sz', lena_new_sz) # 會在保存的名字後面自動加上.npy
img = np.load('lena_new_sz.npy') # 讀取前面保存的數組
二、PIL
1. 顯示圖片
from PIL import Image
im = Image.open('lena.png')
im.show()
2. 將 PIL Image 圖片轉換為 numpy 數組
im_array = np.array(im)
# 也可以用 np.asarray(im) 區別是 np.array() 是深拷貝,np.asarray() 是淺拷貝
3. 保存 PIL 圖片
直接調用 Image 類的 save 方法
from PIL import Image
I = Image.open('lena.png')
I.save('new_lena.png')
4. 將 numpy 數組轉換為 PIL 圖片
這里採用 matplotlib.image 讀入圖片數組,注意這里讀入的數組是 float32 型的,范圍是 0-1,而 PIL.Image 數據是 uinit8 型的,范圍是0-255,所以要進行轉換:
import matplotlib.image as mpimg
from PIL import Image
lena = mpimg.imread('lena.png') # 這里讀入的數據是 float32 型的,范圍是0-1
im = Image.fromarray(np.uinit8(lena*255))
im.show()
5. RGB 轉換為灰度圖
from PIL import Image
I = Image.open('lena.png')
I.show()
L = I.convert('L')
L.show()
③ Python如何重疊圖片
from PIL import Image
import math
import os
os.chdir('圖片地址路徑')
img_A = Image.open('A圖片') #讀取圖片A
for i in [圖片名]:
img_temp = Image.open(i') #依次讀取其它圖片
final_img = Image.blend(img_A, img_temp, 0.5)
final_img.save('路徑\新的圖片名')
④ python用graphics中的image圖片保存與調用
from PIL import Image
import os.path
import glob
def convertjpg(jpgfile,outdir,width=1280,height=720):
img=Image.open(jpgfile)
new_img=img.resize((width,height),Image.BILINEAR)
new_img.save(os.path.join(outdir,os.path.basename(jpgfile)))
for jpgfile in glob.glob("D:/python/*.jpg"):
convertjpg(jpgfile,"D:/newfile")
convertjpg調用時可以有四個參數,如convertjpg(jpgfile,"D:/newfile",800,600)
Image open了jpg用完後要不要close?
⑤ python圖片解析是否有
from PIL import Image ### 此處為導出包,注意字母大小寫import os, os.path # 指明被遍歷的文件夾rootdir =os.path.abspath(os.curdir)+'/Image/'rootdir1=os.path.abspath(os.pardir)+"/Image/" #打包用if os.path.isdir(rootdir): passelse: rootdir=rootdir1 size = 315, 560i=0 for parent,dirnames,filenames in os.walk(rootdir): for filename in filenames: infile=os.path.join(parent,filename) im = Image.open(infile) ### 此處Image.open(dir)為多數對象應用的基礎. im.thumbnail(size) ### 此處size 為長度為2的tuple類型,改變圖片解析度 im.save(infile) ### im.save(dir),圖片處理的最後都用這個,就是保存處理過後的圖片 i+=1 print(i,"Done")
⑥ 如何使用python來判斷圖片相似度
from PIL import Imageimport os#import hashlib def getGray(image_file): tmpls=[] for h in range(0, image_file.size[1]):#h for w in range(0, image_file.size[0]):#w tmpls.append( image_file.getpixel((w,h)) ) return tmpls def getAvg(ls):#獲取平均灰度值 return sum(ls)/len(ls) def getMH(a,b):#比較100個字元有幾個字元相同 dist = 0; for i in range(0,len(a)): if a[i]==b[i]: dist=dist+1 return dist def getImgHash(fne): image_file = Image.open(fne) # 打開 image_file=image_file.resize((12, 12))#重置圖片大小我12px X 12px image_file=image_file.convert("L")#轉256灰度圖 Grayls=getGray(image_file)#灰度集合 avg=getAvg(Grayls)#灰度平均值 bitls=''#接收獲取0或1 #除去變寬1px遍歷像素 for h in range(1, image_file.size[1]-1):#h for w in range(1, image_file.size[0]-1):#w if image_file.getpixel((w,h))>=avg:#像素的值比較平均值 大於記為1 小於記為0 bitls=bitls+'1' else: bitls=bitls+'0' return bitls''' m2 = hashlib.md5() m2.update(bitls) print m2.hexdigest(),bitls return m2.hexdigest()''' a=getImgHash("./Test/測試圖片.jpg")#圖片地址自行替換files = os.listdir("./Test")#圖片文件夾地址自行替換for file in files: b=getImgHash("./Test/"+str(file)) compare=getMH(a,b) print file,u'相似度',str(compare)+'%'
⑦ 怎樣利用Python進行圖片分析
fromPILimportImage###此處為導出包,注意字母大小寫
importos,os.path
#指明被遍歷的文件夾
rootdir=os.path.abspath(os.curdir)+'/Image/'
rootdir1=os.path.abspath(os.pardir)+"/Image/"
#打包用
ifos.path.isdir(rootdir):
pass
else:
rootdir=rootdir1
size=315,560
i=0
forparent,dirnames,filenamesinos.walk(rootdir):
forfilenameinfilenames:
infile=os.path.join(parent,filename)
im=Image.open(infile)###此處Image.open(dir)為多數對象應用的基礎.
im.thumbnail(size)###此處size為長度為2的tuple類型,改變圖片解析度
im.save(infile)###im.save(dir),圖片處理的最後都用這個,就是保存處理過後的圖片
i+=1
print(i,"Done")
要用pil包 安裝如下:pipinstallpillow
⑧ 怎麼用python顯示一張圖片
用python顯示一張圖片方法如下:
import matplotlib.pyplot as plt # plt 用於顯示圖片
import matplotlib.image as mpimg # mpimg 用於讀取圖片
import numpy as nplena = mpimg.imread('lena.png') # 讀取和代碼處於同一目錄下的 lena.png# 此時 lena 就已經是一個 np.array 了,可以對它進行任意處理
lena.shape #(512, 512, 3)plt.imshow(lena) # 顯示圖片plt.axis('off') # 不顯示坐標軸
plt.show()
⑨ python如何進行圖像比對
importImage
importImageChops
im1=Image.open('1.jpg')
im2=Image.open('2.jpg')
diff=ImageChops.difference(im1,im2).getbbox()
printa+b+'is:'+str(diff)