Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
python PIL ͼÏñ´¦Àí
 
  4955  次浏览      32
 2019-4-30
   
 
±à¼­ÍƼö:

±¾ÎÄÀ´×ÔÓÚjianshu£¬ÎÄÕ½éÉÜÁËpilÄÜ´¦ÀíµÄͼƬÀàÐÍ,matplotlib±ê׼ģʽÒÔ¼°Í¼ÏñͨµÀ\¼¸ºÎ±ä»»\²Ã¼ôµÈÏà¹ØÄÚÈÝ ¡£

Image¶Á³öÀ´µÄÊÇPILµÄÀàÐÍ£¬¶øskimage.io¶Á³öÀ´µÄÊý¾ÝÊÇnumpy¸ñʽµÄ

#ImageºÍskimage¶ÁͼƬ
import Image as img
import os
from matplotlib import pyplot as plot
from skimage import io,transform
img_file1 = img.open('./CXR_png/MCUCXR_0042_0.png')
img_file2 = io.imread('./CXR_png/MCUCXR_0042_0.png')

Êä³ö¿ÉÒÔ¿´³öImg¶ÁͼƬµÄ´óСÊÇͼƬµÄ(width, height)£»¶øskimageµÄÊÇ(height,width, channel), [ÕâÒ²ÊÇΪʲôcaffeÔÚµ¥¶À²âÊÔʱҪҪÔÚ´úÂëÖÐÉèÖãºtransformer.set_transpose('data',(2,0,1))£¬ÒòΪcaffe¿ÉÒÔ´¦ÀíµÄͼƬµÄÊý¾Ý¸ñʽÊÇ(channel,height,width)£¬ËùÒÔҪת»»Êý¾Ý]

#¶ÁͼƬºóÊý¾ÝµÄ´óС£º
print "the picture's size: ", img_file1.size
print "the picture's shape: ", img_file2.shape

the picture's size: (4892, 4020)
the picture's shape: (4020, 4892)

#µÃµ½ÏñËØ£º
print(img_file1.getpixel((500,1000)), img_file2[500][1000])
print(img_file1.getpixel((500,1000)), img_file2[1000][500])
print(img_file1.getpixel((1000,500)), img_file2[500][1000])

(0, 139)
(0, 0)
(139, 139)

Img¶Á³öÀ´µÄͼƬ»ñµÃijµãÏñËØÓÃgetpixel((w,h))¿ÉÒÔÖ±½Ó·µ»ØÕâ¸öµãÈý¸öͨµÀµÄÏñËØÖµ

skimage¶Á³öÀ´µÄͼƬ¿ÉÒÔÖ±½Óimg_file2[0][0]»ñµÃ£¬µ«ÊÇÒ»¶¨¼ÇסËüµÄ¸ñʽ£¬²¢²»ÊÇÄãÏëµÄ(channel,height,width)

ÔÚͼƬÉÏÃæ¼ÓÎÄ×Ö

#н¨»æÍ¼¶ÔÏó
draw = ImageDraw.Draw(image)£¬
#»ñȡͼÏñµÄ¿íºÍ¸ß
width, height = image.size£»
#** ImageFontÄ£¿é**
#Ñ¡ÔñÎÄ×Ö×ÖÌåºÍ´óС
setFont = ImageFont.truetype('C:/windows/fonts/Dengl.ttf', 20)£¬
#ÉèÖÃÎÄ×ÖÑÕÉ«
fillColor = "#ff0000"
#дÈëÎÄ×Ö
draw.text((40, height - 100), u'¹ã¸æ', font=setFont, fill=fillColor)

ͼƬÐÅÏ¢

Èç¹ûÎÒÃÇÏëÖªµÀһЩskimageͼƬÐÅÏ¢

from skimage import io, data
img = data.chelsea()
io.imshow(img)
print(type(img)) #ÏÔʾÀàÐÍ
print(img.shape) #ÏÔʾ³ß´ç
print(img.shape[0]) #ͼƬ¸ß¶È
print(img.shape[1]) #ͼƬ¿í¶È
print(img.shape[2]) #ͼƬͨµÀÊý
print(img.size) #ÏÔʾ×ÜÏñËØ¸öÊý
print(img.max()) #×î´óÏñËØÖµ
print(img.min()) #×îСÏñËØÖµ
print(img.mean()) #ÏñËØÆ½¾ùÖµ
print(img[0][0])#ͼÏñµÄÏñËØÖµ

PIL image ²é¿´Í¼Æ¬ÐÅÏ¢£¬¿ÉÓÃÈçÏµķ½·¨

print type(img)
print img.size #ͼƬµÄ³ß´ç
print img.mode #ͼƬµÄģʽ
print img.format #ͼƬµÄ¸ñʽ
print(img.getpixel((0,0)))#µÃµ½ÏñËØ£º
#img¶Á³öÀ´µÄͼƬ»ñµÃijµãÏñËØÓÃgetpixel((w,h))¿ÉÒÔÖ±½Ó·µ»ØÕâ¸öµãÈý¸öͨµÀµÄÏñËØÖµ

# »ñȡͼÏñµÄ»Ò¶ÈÖµ·¶Î§
width = img.size[0]
height = img.size[1]

# Êä³öͼƬµÄÏñËØÖµ
count = 0
for i in range(0, width):
for j in range(0, height):
if img.getpixel((i, j))>=0 and img.getpixel((i, j))<=255:
count +=1
print count
print(height*width)

ʹÓÃpython½øÐÐÊý×ÖͼƬ´¦Àí£¬»¹µÃ°²×°Pillow°ü¡£ËäÈ»pythonÀïÃæ×Ô´øÒ»¸öPIL£¨python images library), µ«Õâ¸ö¿âÏÖÔÚÒѾ­Í£Ö¹¸üÐÂÁË£¬ËùÒÔʹÓÃPillow, ËüÊÇÓÉPIL·¢Õ¹¶øÀ´µÄ¡£

pilÄÜ´¦ÀíµÄͼƬÀàÐÍ

pil¿ÉÒÔ´¦Àí¹âդͼƬ(ÏñËØÊý¾Ý×é³ÉµÄµÄ¿é)¡£

ͨµÀ

Ò»¸öͼƬ¿ÉÒÔ°üº¬Ò»µ½¶à¸öÊý¾ÝͨµÀ£¬Èç¹ûÕâЩͨµÀ¾ßÓÐÏàͬµÄάÊýºÍÉî¶È£¬PilÔÊÐí½«ÕâЩͨµÀ½øÐеþ¼Ó

ģʽ
1 1λÏñËØ£¬ºÚºÍ°×£¬´æ³É8λµÄÏñËØ
L 8λÏñËØ£¬ºÚ°×
P 8λÏñËØ£¬Ê¹Óõ÷É«°åÓ³Éäµ½ÈÎºÎÆäËûģʽ
RGB 3¡Á8λÏñËØ£¬Õæ²Ê
RGBA 4¡Á8λÏñËØ£¬Õæ²Ê+͸Ã÷ͨµÀ
CMYK 4¡Á8λÏñËØ£¬ÑÕÉ«¸ôÀë
YCbCr 3¡Á8λÏñËØ£¬²ÊÉ«ÊÓÆµ¸ñʽ
I 32λÕûÐÍÏñËØ
F 32λ¸¡µãÐÍÏñËØ

×ø±ê

Pil²ÉÈ¡×óÉϽÇΪ(0,0)µÄ×ø±êϵͳ

ͼƬµÄ´ò¿ªÓëÏÔʾ

from PIL import Image
img=Image.open('d:/dog.png')
img.show()

ËäȻʹÓõÄÊÇPillow£¬µ«ËüÊÇÓÉPIL fork¶øÀ´£¬Òò´Ë»¹ÊÇÒª´ÓPILÖнøÐÐimport. ʹÓÃopen()º¯ÊýÀ´´ò¿ªÍ¼Æ¬£¬Ê¹ÓÃshow()º¯ÊýÀ´ÏÔʾͼƬ¡£

ÕâÖÖͼƬÏÔʾ·½Ê½Êǵ÷ÓòÙ×÷ϵͳ×Ô´øµÄͼƬä¯ÀÀÆ÷À´´ò¿ªÍ¼Æ¬£¬ÓÐЩʱºòÕâÖÖ·½Ê½²»Ì«·½±ã£¬Òò´ËÎÒÃÇÒ²¿ÉÒÔʹÓÃÁíÉÏÒ»ÖÖ·½Ê½£¬ÈóÌÐòÀ´»æÖÆÍ¼Æ¬¡£

from PIL import Image
import matplotlib.pyplot as plt
img=Image.open('d:/dog.png')
plt.figure("dog")
plt.figure(num=1, figsize=(8,5),)
plt.title('The image title')
plt.axis('off') # ²»ÏÔÊ¾×ø±êÖá
plt.imshow(img)
plt.show()

ÕâÖÖ·½·¨ËäÈ»¸´ÔÓÁËЩ£¬µ«ÍƼöʹÓÃÕâÖÖ·½·¨£¬ËüʹÓÃÒ»¸ömatplotlibµÄ¿âÀ´»æÖÆÍ¼Æ¬½øÐÐÏÔʾ¡£matplotlibÊÇÒ»¸öרҵ»æÍ¼µÄ¿â£¬Ï൱ÓÚmatlabÖеÄplot,¿ÉÒÔÉèÖöà¸öfigure,ÉèÖÃfigureµÄ±êÌ⣬ÉõÖÁ¿ÉÒÔʹÓÃsubplotÔÚÒ»¸öfigureÖÐÏÔʾ¶àÕÅͼƬ¡£matplotlib ¿ÉÒÔÖ±½Ó°²×°.

figureĬÈÏÊÇ´øaxisµÄ£¬Èç¹ûûÓÐÐèÒª£¬ÎÒÃÇ¿ÉÒԹصô

plt.axis('off')

ͼÏñ¼Ó±êÌâ

plt.title('The image title')

 

--------------------------------------------------------------------------------

matplotlib±ê׼ģʽ

plt.figure(num=5, figsize=(8,5),)
#plt.figure(num='newimage', figsize=(8,5),)
plt.title('The image title', color='#0000FF')
plt.imshow(lena) # ÏÔʾͼƬ
plt.axis('off') # ²»ÏÔÊ¾×ø±êÖá
plt.show()

 

--------------------------------------------------------------------------------

PIL image ²é¿´Í¼Æ¬ÐÅÏ¢£¬¿ÉÓÃÈçÏµķ½·¨

print type(img)
print img.size #ͼƬµÄ³ß´ç
print img.mode #ͼƬµÄģʽ
print img.format #ͼƬµÄ¸ñʽ

ͼƬµÄ±£´æ

img.save('d:/dog.jpg')

¾ÍÒ»ÐдúÂ룬·Ç³£¼òµ¥¡£ÕâÐдúÂë²»½öÄܱ£´æÍ¼Æ¬£¬»¹ÊÇת»»¸ñʽ£¬Èç±¾ÀýÖУ¬¾ÍÓÉÔ­À´µÄpngͼƬ±£´æÎªÁËjpgͼƬ¡£

--------------------------------------------------------------------------------

ͼÏñͨµÀ\¼¸ºÎ±ä»»\²Ã¼ô

PIL¿ÉÒÔ¶ÔͼÏñµÄÑÕÉ«½øÐÐת»»£¬²¢Ö§³ÖÖîÈç24λ²ÊÉ«¡¢8λ»Ò¶ÈͼºÍ¶þֵͼµÈģʽ£¬¼òµ¥µÄת»»¿ÉÒÔͨ¹ýImage.convert(mode)º¯ÊýÍê ³É£¬ÆäÖÐmode±íʾÊä³öµÄÑÕɫģʽ£¬ÀýÈç''L''±íʾ»Ò¶È£¬''1''±íʾ¶þֵͼģʽµÈ¡£µ«ÊÇÀûÓÃconvertº¯Êý½«»Ò¶Èͼת»»Îª¶þֵͼʱ£¬ÊDzÉÓà ¹Ì¶¨µÄãÐ Öµ127À´ÊµÏֵ쬼´»Ò¶È¸ßÓÚ127µÄÏñËØÖµÎª1£¬¶ø»Ò¶ÈµÍÓÚ127µÄÏñËØÖµÎª0¡£

²ÊɫͼÏñת»Ò¶Èͼ

from PIL import Image
import matplotlib.pyplot as plt
img=Image.open('d:/ex.jpg')
gray=img.convert('L')
plt.figure("beauty")
plt.imshow(gray,cmap='gray')
plt.axis('off')
plt.title('The color image to gray image')
plt.show()

ʹÓú¯Êýconvert()À´½øÐÐת»»£¬ËüÊÇͼÏñʵÀý¶ÔÏóµÄÒ»¸ö·½·¨£¬½ÓÊÜÒ»¸ö mode ²ÎÊý£¬ÓÃÒÔÖ¸¶¨Ò»ÖÖÉ«²Êģʽ£¬mode µÄȡֵ¿ÉÒÔÊÇÈçϼ¸ÖÖ£º

¡¤ 1 (1-bit pixels, black and white, stored with one pixel per byte)
¡¤ L (8-bit pixels, black and white)
¡¤ P (8-bit pixels, mapped to any other mode using a colour palette)
¡¤ RGB (3x8-bit pixels, true colour)
¡¤ RGBA (4x8-bit pixels, true colour with transparency mask)
¡¤ CMYK (4x8-bit pixels, colour separation)
¡¤ YCbCr (3x8-bit pixels, colour video format)
¡¤ I (32-bit signed integer pixels)
¡¤ F (32-bit floating point pixels)

ͨµÀ·ÖÀëÓëºÏ²¢

from PIL import Image
import matplotlib.pyplot as plt
img=Image.open('d:/ex.jpg') #´ò¿ªÍ¼Ïñ
gray=img.convert('L') #ת»»³É»Ò¶È
r,g,b=img.split() #·ÖÀëÈýͨµÀ
pic=Image.merge('RGB',(r,g,b)) #ºÏ²¢ÈýͨµÀ
plt.figure("beauty")
plt.subplot(2,3,1), plt.title('origin')
plt.imshow(img),plt.axis('off')
plt.subplot(2,3,2), plt.title('gray')
plt.imshow(gray,cmap='gray'),plt.axis('off')
plt.subplot(2,3,3), plt.title('merge')
plt.imshow(pic),plt.axis('off')
plt.subplot(2,3,4), plt.title('r')
plt.imshow(r,cmap='gray'),plt.axis('off')
plt.subplot(2,3,5), plt.title('g')
plt.imshow(g,cmap='gray'),plt.axis('off')
plt.subplot(2,3,6), plt.title('b')
plt.imshow(b,cmap='gray'),plt.axis('off')
plt.show()

²Ã¼ôͼƬ

´ÓԭͼƬÖвüô¸ÐÐËÈ¤ÇøÓò£¨roi),²Ã¼ôÇøÓòÓÉ4-tuple¾ö¶¨£¬¸ÃtupleÖÐÐÅϢΪ(left, upper, right, lower)¡£ Pillow×ó±ßϵͳµÄÔ­µã£¨0£¬0£©ÎªÍ¼Æ¬µÄ×óÉϽǡ£×ø±êÖеÄÊý×Öµ¥Î»ÎªÏñËØµã¡£

from PIL import Image
import matplotlib.pyplot as plt
img=Image.open('d:/ex.jpg') #´ò¿ªÍ¼Ïñ
plt.figure("beauty")
plt.subplot(1,2,1), plt.title('origin')
plt.imshow(img),plt.axis('off')
#box±äÁ¿ÊÇÒ»¸öËÄÔª×é(×ó£¬ÉÏ£¬ÓÒ£¬ÏÂ)¡£
box=(80,100,260,300)
roi=img.crop(box)
plt.subplot(1,2,2)
plt.title('roi')
plt.imshow(roi)
plt.axis('off')
plt.show()

ÓÃplot»æÖÆÏÔʾ³öͼƬºó£¬½«Êó±êÒÆ¶¯µ½Í¼Æ¬ÉÏ£¬»áÔÚÓÒϽdzöÏÖµ±Ç°µãµÄ×ø±ê£¬ÒÔ¼°ÏñËØÖµ¡£

**¼¸ºÎ±ä»» **

ImageÀàÓÐresize()¡¢rotate()ºÍtranspose()·½·¨½øÐм¸ºÎ±ä»»¡£

ͼÏñµÄËõ·ÅºÍÐýת

dst = img.resize((128, 128))
dst = img.rotate(45) # ˳ʱÕë½Ç¶È±íʾ

ת»»Í¼Ïñ

dst = im.transpose(Image.FLIP_LEFT_RIGHT) #×óÓÒ»¥»»
dst = im.transpose(Image.FLIP_TOP_BOTTOM) #ÉÏÏ»¥»»
dst = im.transpose(Image.ROTATE_90) #˳ʱÕëÐýת
dst = im.transpose(Image.ROTATE_180)
dst = im.transpose(Image.ROTATE_270)

transpose()ºÍrotate()ûÓÐÐÔÄܲî±ð¡£

--------------------------------------------------------------------------------

pythonͼÏñ´¦Àí¿âImageÄ£¿é

´´½¨Ò»¸öеÄͼƬ

Image.new(mode, size)
Image.new(mode, size, color)

²ãµþͼƬ

²ãµþÁ½¸öͼƬ£¬img2ºÍimg2,alphaÊÇÒ»¸ö½éÓÚ[0,1]µÄ¸¡µãÊý£¬Èç¹ûΪ0£¬Ð§¹ûΪimg1£¬Èç¹ûΪ1.0£¬Ð§¹ûΪimg2¡£µ±È»img1ºÍimg2µÄ³ß´çºÍģʽ±ØÐëÏàͬ¡£Õâ¸öº¯Êý¿ÉÒÔ×ö³öºÜƯÁÁµÄЧ¹ûÀ´£¬¶øÍ¼ÐεÄËãÊõ¼Ó¼õºó±ß»á˵µ½¡£

Image.blend(img1, img2, alpha)

composite¿ÉÒÔʹÓÃÁíÍâÒ»¸öͼƬ×÷ΪÃɰå(mask)£¬ËùÓеÄÕâÈýÕÅͼƬ±ØÐë¾ß±¸ÏàͬµÄ³ß´ç£¬maskͼƬµÄģʽ¿ÉÒÔΪ¡°1¡±£¬¡°L¡±£¬¡°RGBA¡±

Image.composite(img1, img2, mask)

--------------------------------------------------------------------------------

Ìí¼Óˮӡ

Ìí¼ÓÎÄ×Öˮӡ

from PIL import Image, ImageDraw,ImageFont
im = Image.open("d:/pic/lena.jpg").convert('RGBA')
txt=Image.new('RGBA', im.size, (0,0,0,0))
fnt=ImageFont.truetype("c:/Windows/fonts/Tahoma.ttf", 20)
d=ImageDraw.Draw(txt)
d.text((txt.size[0]-80,txt.size[1]-30), "cnBlogs",font=fnt, fill=(255,255,255,255))
out=Image.alpha_composite(im, txt)
out.show()

Ìí¼ÓСͼƬˮӡ

from PIL import Image
im = Image.open("d:/pic/lena.jpg")
mark=Image.open("d:/logo_small.gif")
layer=Image.new('RGBA', im.size, (0,0,0,0))
layer.paste(mark, (im.size[0]-150,im.size[1]-60))
out=Image.composite(layer,im,layer)
out.show()

--------------------------------------------------------------------------------

PIL Image ͼÏñ»¥×ª numpy Êý×é

½« PIL Image ͼƬת»»Îª numpy Êý×é

im_array = np.array(im)
# Ò²¿ÉÒÔÓà np.asarray(im) Çø±ðÊÇ np.array() ÊÇÉ±´£¬np.asarray() ÊÇdz¿½±´

¸ü¶àϸ½Ú¼ûpythonÖеÄÉ±´Óëdz¿½±´

numpy image ²é¿´Í¼Æ¬ÐÅÏ¢£¬¿ÉÓÃÈçÏµķ½·¨

print img.shape
print img.dtype

½« 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()

PIL image ²é¿´Í¼Æ¬ÐÅÏ¢£¬¿ÉÓÃÈçÏµķ½·¨

print type(img)
print img.size #ͼƬµÄ³ß´ç
print img.mode #ͼƬµÄģʽ
print img.format #ͼƬµÄ¸ñʽ
print(img.getpixel((0,0))[0])#µÃµ½ÏñËØ£º
#img¶Á³öÀ´µÄͼƬ»ñµÃijµãÏñËØÓÃgetpixel((w,h))¿ÉÒÔÖ±½Ó·µ»ØÕâ¸öµãÈý¸öͨµÀµÄÏñËØÖµ

--------------------------------------------------------------------------------

ͼÏñÖеÄÏñËØ·ÃÎÊ

Ç°ÃæµÄһЩÀý×ÓÖУ¬ÎÒÃǶ¼ÊÇÀûÓÃImage.open£¨£©À´´ò¿ªÒ»·ùͼÏñ£¬È»ºóÖ±½Ó¶ÔÕâ¸öPIL¶ÔÏó½øÐвÙ×÷¡£Èç¹ûÖ»ÊǼòµ¥µÄ²Ù×÷»¹¿ÉÒÔ£¬µ«ÊÇÈç¹û²Ù×÷ÉÔ΢¸´ÔÓһЩ£¬¾Í±È½Ï³ÔÁ¦ÁË¡£Òò´Ë£¬Í¨³£ÎÒÃǼÓÔØÍêͼƬºó£¬¶¼ÊǰÑͼƬת»»³É¾ØÕóÀ´½øÐиü¼Ó¸´ÔӵIJÙ×÷¡£

´ò¿ªÍ¼Ïñ²¢×ª»¯Îª¾ØÕ󣬲¢ÏÔʾ

from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
img=np.array(Image.open('d:/lena.jpg')) #´ò¿ªÍ¼Ïñ²¢×ª»¯ÎªÊý×Ö¾ØÕó
plt.figure("dog")
plt.imshow(img)
plt.axis('off')
plt.title('The image title')
plt.show()

µ÷ÓÃnumpyÖеÄarray£¨£©º¯Êý¾Í¿ÉÒÔ½«PIL¶ÔÏóת»»ÎªÊý×é¶ÔÏó¡£

--------------------------------------------------------------------------------

²é¿´Í¼Æ¬ÐÅÏ¢£¬¿ÉÓÃÈçÏµķ½·¨

PIL image ²é¿´Í¼Æ¬ÐÅÏ¢£¬¿ÉÓÃÈçÏµķ½·¨

print type(img)
print img.size #ͼƬµÄ³ß´ç
print img.mode #ͼƬµÄģʽ
print img.format #ͼƬµÄ¸ñʽ
print(img.getpixel((0,0))[0])#µÃµ½ÏñËØ£º
#img¶Á³öÀ´µÄͼƬ»ñµÃijµãÏñËØÓÃgetpixel((w,h))¿ÉÒÔÖ±½Ó·µ»ØÕâ¸öµãÈý¸öͨµÀµÄÏñËØ

PIL image ²é¿´Í¼Æ¬ÐÅÏ¢£¬¿ÉÓÃÈçÏµķ½·¨

print img.shape
print img.dtype

Èç¹ûÊÇRGBͼƬ£¬ÄÇôת»»ÎªarrayÖ®ºó£¬¾Í±ä³ÉÁËÒ»¸örowscolschannelsµÄÈýά¾ØÕó,Òò´Ë£¬ÎÒÃÇ¿ÉÒÔʹÓÃ

img[i,j,k]

 

À´·ÃÎÊÏñËØÖµ¡£

Àý1£º´ò¿ªÍ¼Æ¬£¬²¢Ëæ»úÌí¼ÓһЩ½·ÑÎÔëÉù

from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
img=np.array(Image.open('d:/ex.jpg'))

#Ëæ»úÉú³É5000¸ö½·ÑÎ
rows,cols,dims=img.shape
for i in range(5000):
x=np.random.randint(0,rows)
y=np.random.randint(0,cols)
img[x,y,:]=255

plt.figure("beauty")
plt.imshow(img)
plt.axis('off')
plt.show()

Àý2£º½«lenaͼÏñ¶þÖµ»¯£¬ÏñËØÖµ´óÓÚ128µÄ±äΪ1£¬·ñÔò±äΪ0

from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
img=np.array(Image.open('d:/pic/lena.jpg').convert('L'))

rows,cols=img.shape
for i in range(rows):
for j in range(cols):
if (img[i,j]<=128):
img[i,j]=0
else:
img[i,j]=1

plt.figure("lena")
plt.imshow(img,cmap='gray')
plt.axis('off')
plt.show()

Èç¹ûÒª¶Ô¶à¸öÏñËØµã½øÐвÙ×÷£¬¿ÉÒÔʹÓÃÊý×éÇÐÆ¬·½Ê½·ÃÎÊ¡£ÇÐÆ¬·½Ê½·µ»ØµÄÊÇÒÔÖ¸¶¨¼ä¸ôϱê·ÃÎÊ ¸ÃÊý×éµÄÏñËØÖµ¡£ÏÂÃæÊÇÓйػҶÈͼÏñµÄһЩÀý×Ó£º

img[i,:] = im[j,:] # ½«µÚ j ÐеÄÊýÖµ¸³Öµ¸øµÚ i ÐÐ
img[:,i] = 100 # ½«µÚ i ÁеÄËùÓÐÊýÖµÉèΪ 100
img[:100,:50].sum() # ¼ÆËãǰ 100 ÐС¢Ç° 50 ÁÐËùÓÐÊýÖµµÄºÍ
img[50:100,50:100] # 50~100 ÐУ¬50~100 ÁУ¨²»°üÀ¨µÚ 100 ÐÐºÍµÚ 100 ÁУ©
img[i].mean() # µÚ i ÐÐËùÓÐÊýÖµµÄƽ¾ùÖµ
img[:,-1] # ×îºóÒ»ÁÐ
img[-2,:] (or im[-2]) # µ¹ÊýµÚ¶þÐÐ

Ö±½Ó²Ù×÷ÏñËØµã

²»µ«¿ÉÒÔ¶Ôÿ¸öÏñËØµã½øÐвÙ×÷£¬¶øÇÒ£¬Ã¿Ò»¸öͨµÀ¶¼¿ÉÒÔ¶ÀÁ¢µÄ½øÐвÙ×÷¡£±ÈÈ磬½«Ã¿¸öÏñËØµãµÄÁÁ¶È(²»ÖªµÀÓÐûÓиüרҵµÄ´Ê)Ôö´ó20%

out = img.point(lambda i : i * 1.2)
#×¢ÒâÕâÀïÓõ½Ò»¸öÄäÃûº¯Êý(ÄǸö¿ÉÒÔ°ÑiµÄ1.2±¶·µ»ØµÄº¯Êý)

argument * scale + offset
e.g
out = img.point(lambda i: i*1.2 + 10)

ͼÏñÖ±·½Í¼

ÎÒÃÇÏÈÀ´¿´Á½¸öº¯ÊýreshapeºÍflatten:

¼ÙÉèÎÒÃÇÏÈÉú³ÉÒ»¸öһάÊý×飺

vec=np.arange(15)
print vec

Èç¹ûÎÒÃÇÒª°ÑÕâ¸öһάÊý×飬±ä³ÉÒ»¸ö3*5¶þά¾ØÕó£¬ÎÒÃÇ¿ÉÒÔʹÓÃreshapeÀ´ÊµÏÖ

mat= vec.reshape(3,5)
print mat

ÏÖÔÚÈç¹ûÎÒÃÇ·µ¹ýÀ´£¬ÖªµÀÒ»¸ö¶þά¾ØÕó£¬Òª±ä³ÉÒ»¸öһάÊý×飬¾Í²»ÄÜÓÃreshapeÁË£¬Ö»ÄÜÓÃflatten. ÎÒÃÇÀ´¿´Á½ÕßµÄÇø±ð

a1=mat.reshape(1,-1) #-1±íʾΪÈÎÒ⣬ÈÃϵͳ×Ô¶¯¼ÆËã
print a1
a2=mat.flatten()
print a2

¿ÉÒÔ¿´³ö£¬ÓÃreshape½øÐб任£¬Êµ¼ÊÉϱ任ºó»¹ÊǶþάÊý×飬Á½¸ö·½À¨ºÅ£¬Òò´ËÖ»ÄÜÓÃflatten.

ÎÒÃÇÒª¶ÔͼÏñÇóÖ±·½Í¼£¬¾ÍÐèÒªÏȰÑͼÏñ¾ØÕó½øÐÐflatten²Ù×÷£¬Ê¹Ö®±äΪһάÊý×飬ȻºóÔÙ½øÐÐͳ¼Æ

»­»Ò¶Èͼֱ·½Í¼

»æÍ¼¶¼¿ÉÒÔµ÷ÓÃmatplotlib.pyplot¿âÀ´½øÐУ¬ÆäÖеÄhistº¯Êý¿ÉÒÔÖ±½Ó»æÖÆÖ±·½Í¼¡£

µ÷Ó÷½Ê½£º

n, bins, patches = plt.hist(arr, bins=50, normed=1, facecolor='green', alpha=0.75)

histµÄ²ÎÊý·Ç³£¶à£¬µ«³£ÓõľÍÕâÎå¸ö£¬Ö»ÓеÚÒ»¸öÊDZØÐëµÄ£¬ºóÃæËĸö¿ÉÑ¡

arr: ÐèÒª¼ÆËãÖ±·½Í¼µÄһάÊý×é
bins: Ö±·½Í¼µÄÖùÊý£¬¿ÉÑ¡ÏĬÈÏΪ10
normed: ÊÇ·ñ½«µÃµ½µÄÖ±·½Í¼ÏòÁ¿¹éÒ»»¯¡£Ä¬ÈÏΪ0
facecolor: Ö±·½Í¼ÑÕÉ«
alpha: ͸Ã÷¶È

·µ»ØÖµ £º

n: Ö±·½Í¼ÏòÁ¿£¬ÊÇ·ñ¹éÒ»»¯ÓɲÎÊýÉ趨
bins: ·µ»Ø¸÷¸öbinµÄÇø¼ä·¶Î§
patches: ·µ»ØÃ¿¸öbinÀïÃæ°üº¬µÄÊý¾Ý£¬ÊÇÒ»¸ölist

from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
img=np.array(Image.open('d:/pic/lena.jpg').convert('L'))

plt.figure("lena")
arr=img.flatten()
n, bins, patches = plt.hist(arr, bins=256, normed=1, facecolor='green', alpha=0.75)
plt.title('The image title')
plt.show()

²ÊɫͼƬֱ·½Í¼

ʵ¼ÊÉÏÊǺͻҶÈÖ±·½Í¼Ò»ÑùµÄ£¬Ö»ÊǷֱ𻭳öÈýͨµÀµÄÖ±·½Í¼£¬È»ºóµþ¼ÓÔÚÒ»Æð¡£

from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
src=Image.open('d:/ex.jpg')
r,g,b=src.split()
plt.figure("lena")
ar=np.array(r).flatten()
plt.hist(ar, bins=256, normed=1,facecolor='r',edgecolor='r',hold=1)
ag=np.array(g).flatten()
plt.hist(ag, bins=256, normed=1, facecolor='g',edgecolor='g',hold=1)
ab=np.array(b).flatten()
plt.hist(ab, bins=256, normed=1, facecolor='b',edgecolor='b')
plt.title('The image title')
plt.show()

Óɴ˿ɼû£¬matplotlibµÄ»­Í¼¹¦ÄÜÊǷdz£Ç¿´óµÄ£¬Ö±·½Í¼Ö»ÊÇÆäÖзdz£Ð¡µÄÒ»²¿·Ö£¬¸ü¶àµÄÇë²Î¿´¹Ù·½Îĵµ£º

http://matplotlib.org/api/pyplot_summary.html

--------------------------------------------------------------------------------

PythonÈçºÎ¶Áȡָ¶¨Îļþ¼ÐϵÄËùÓÐͼÏñ

'''
Load the image files form the folder
input:
imgDir: the direction of the folder
imgName:the name of the folder
output:
data:the data of the dataset
label:the label of the datset
'''
def load_Img(imgDir,imgFoldName):
imgs = os.listdir(imgDir+imgFoldName)
imgNum = len(imgs)
data = np.empty((imgNum,1,12,12),dtype="float32")
label = np.empty((imgNum,),dtype="uint8")
for i in range (imgNum):
img = Image.open(imgDir+imgFoldName+"/"+imgs[i])
arr = np.asarray(img,dtype="float32")
data[i,:,:,:] = arr
label[i] = int(imgs[i].split('.')[0])
return data,label

µ÷Ó÷½Ê½

craterDir = "./data/CraterImg/Adjust/"
foldName = "East_CraterAdjust12"
data, label = load_Img(craterDir,foldName)

 

--------------------------------------------------------------------------------

PythonͼÐÎͼÏñ´¦Àí¿âImageEnhanceÄ£¿éͼÏñÔöÇ¿

¿ÉÒÔʹÓÃImageEnhanceÄ£¿é£¬ÆäÖаüº¬ÁË´óÁ¿µÄÔ¤¶¨ÒåµÄͼƬ¼ÓÇ¿·½Ê½

¼ÓÇ¿Æ÷°üÀ¨£¬É«²Êƽºâ£¬ÁÁ¶Èƽºâ£¬¶Ô±È¶È£¬Èñ»¯¶ÈµÈ¡£Í¨¹ýʹÓÃÕâЩ¼ÓÇ¿Æ÷£¬¿ÉÒÔºÜÇáËɵÄ×öµ½Í¼Æ¬µÄÉ«²Êµ÷Õû£¬ÁÁ¶Èµ÷Õû£¬Èñ»¯µÈ²Ù×÷£¬google picasaÖÐÌṩµÄһЩ»ù±¾µÄͼƬ¼ÓÇ¿¹¦Äܶ¼¿ÉÒÔʵÏÖ¡£

ÑÕÉ«¼ÓÇ¿colorÓÃÓÚµ÷ÕûͼƬµÄÉ«²Êƽºâ£¬Ï൱ÓÚ²ÊÉ«µçÊÓ»úµÄÉ«²Êµ÷Õû¡£Õâ¸öÀàʵÏÖÁËÉϱßÌáµ½µÄ½Ó¿ÚµÄenhance·½·¨¡£

ImageEnhance.Color(img)#»ñµÃÉ«²Ê¼ÓÇ¿Æ÷ʵÀý

È»ºó¼´¿ÉʹÓÃenhance(factor)·½·¨½øÐе÷Õû¡£

ÁÁ¶È¼ÓÇ¿brightnessÓÃÓÚµ÷ÕûͼƬµÄÃ÷°µÆ½ºâ¡£

ImageEnhance.Brightness(img)#»ñµÃÁÁ¶È¼ÓÇ¿Æ÷ʵÀý

factor=1·µ»ØÒ»¸öºÚÉ«µÄͼƬ¶ÔÏó£¬0·µ»ØÔ­Ê¼Í¼Æ¬¶ÔÏó

¶Ô±È¶È¼ÓÇ¿contrastÓÃÓÚµ÷ÕûͼƬµÄ¶Ô±È¶È£¬Ï൱ÓÚ²ÊÉ«µçÊÓ»úµÄ¶Ô±È¶Èµ÷Õû¡£

ImageEnhance.Contrast(image) #»ñµÃ¶Ô±È¶È¼ÓÇ¿Æ÷ʵÀý

import ImageEnhance
enh = ImageEnhance.Contrast(im)
enh.ehhance(1.5).show("50% more contrast")

Èñ»¯¶È¼ÓÇ¿sharpnessÓÃÓÚÈñ»¯/¶Û»¯Í¼Æ¬¡£

ImageEnhance.Sharpness(image) #·µ»ØÈñ»¯¼ÓÇ¿Æ÷ʵÀý

Ó¦¸Ã×¢ÒâµÄÊÇÈñ»¯²Ù×÷µÄfactorÊÇÒ»¸ö0-2µÄ¸¡µãÊý£¬µ±factor=0ʱ£¬·µ»ØÒ»¸öÍêȫģºýµÄͼƬ¶ÔÏ󣬵±factor=1ʱ£¬·µ»ØÒ»¸öÍêÈ«Èñ»¯µÄͼƬ¶ÔÏó£¬factor=1ʱ£¬·µ»ØÔ­Ê¼Í¼Æ¬¶ÔÏó

--------------------------------------------------------------------------------

PythonͼÏñ´¦Àí¿âImageChopsÄ£¿é

Õâ¸öÄ£¿éÖ÷Òª°üÀ¨¶ÔͼƬµÄËãÊõÔËË㣬½Ð×öͨµÀÔËËã(channel operations)¡£Õâ¸öÄ£¿é¿ÉÒÔÓÃÓÚ¶àÖÖ;¾¶£¬°üÀ¨Ò»Ð©ÌØÐ§ÖÆ×÷£¬Í¼Æ¬ÕûºÏ£¬ËãÊý»æÍ¼µÈµÈ·½Ãæ¡£

Invert:

ImageChops.invert(image)

ͼƬ·´É«£¬ÀàËÆÓÚ¼¯ºÏ²Ù×÷ÖеÄÇó²¹¼¯£¬×î´óֵΪMax£¬Ã¿¸öÏñËØ×ö¼õ·¨£¬È¡³ö·´É«.

¹«Ê½

out = MAX - image

lighter:

ImageChops.lighter(image1, image2)

darker:

ImageChops.darker(image1, image2)

difference:

ImageChops.difference(image1, image2)

 

Çó³öÁ½ÕÅͼƬµÄ¾ø¶ÔÖµ£¬ÖðÏñËØµÄ×ö¼õ·¨

multiply:

ImageChops.multiply(image1, image2)

½«Á½ÕÅͼƬ»¥Ïàµþ¼Ó£¬Èç¹ûÓô¿ºÚÉ«ÓëijͼƬ½øÐеþ¼Ó²Ù×÷£¬»áµÃµ½Ò»¸ö´¿ºÚÉ«µÄͼƬ¡£Èç¹ûÓô¿°×É«ÓëͼƬ×÷µþ¼Ó£¬Í¼Æ¬²»ÊÜÓ°Ïì¡£

¼ÆËãµÄ¹«Ê½ÈçϹ«Ê½

out = img1 * img2 / MAX

screen:

ImageChops.screen(image1, image2)

ÏÈ·´É«£¬ºóµþ¼Ó¡£

¹«Ê½

out = MAX - ((MAX - image1) * (MAX - image2) / MAX)

add:

ImageChops.add(img1, img2, scale, offset)

¶ÔÁ½ÕÅͼƬ½øÐÐËãÊõ¼Ó·¨£¬°´ÕÕһϹ«Ê½½øÐмÆËã

¹«Ê½

out = (img1+img2) / scale + offset

Èç¹û³ß¶ÈºÍÆ«ÒÆ±»ºöÂԵϝ£¬scale=1.0, offset=0.0¼´

out = img1 + img2

subtract:

ImageChops.subtract(img1, img2, scale, offset)

¶ÔÁ½ÕÅͼƬ½øÐÐËãÊõ¼õ·¨£º

¹«Ê½

out = (img1-img2) / scale + offset

--------------------------------------------------------------------------------

PythonͼÐÎͼÏñ´¦Àí¿âImageFilterÄ£¿éͼÏñÂ˾µ

ImageFilterÊÇPILµÄÂ˾µÄ£¿é£¬Í¨¹ýÕâЩԤ¶¨ÒåµÄÂ˾µ£¬¿ÉÒÔ·½±ãµÄ¶ÔͼƬ½øÐÐһЩ¹ýÂ˲Ù×÷£¬´Ó¶øÈ¥µôͼƬÖеÄÔëÒô(²¿·ÖµÄÏû³ý)£¬ÕâÑù¿ÉÒÔ½µµÍ½«À´´¦ÀíµÄ¸´ÔÓ¶È(Èçģʽʶ±ðµÈ)¡£

Â˾µÃû³Æ º¬Òå
ImageFilter.BLUR Ä£ºýÂ˾µ
ImageFilter.CONTOUR ÂÖÀª
ImageFilter.EDGE_ENHANCE ±ß½ç¼ÓÇ¿
ImageFilter.EDGE_ENHANCE_MORE ±ß½ç¼ÓÇ¿(·§Öµ¸ü´ó)
ImageFilter.EMBOSS ¸¡µñÂ˾µ
ImageFilter.FIND_EDGES ±ß½çÂ˾µ
ImageFilter.SMOOTH ƽ»¬Â˾µ
ImageFilter.SMOOTH_MORE ƽ»¬Â˾µ(·§Öµ¸ü´ó)
ImageFilter.SHARPEN Èñ»¯Â˾µ

 

ҪʹÓÃPILµÄÂ˾µ¹¦ÄÜ£¬ÐèÒªÒýÈëImageFilterÄ£¿é

import Image, ImageFilter

def inHalf(img):
w,h = img.size
return img.resize((w/2, h/2))

def filterDemo():
img = Image.open("sandstone_half.jpg")
#img = inHalf(img)
imgfilted = img.filter(ImageFilter.SHARPEN)
#imgfilted.show()
imgfilted.save("sandstone_sharpen.jpg")

if __name__ == "__main__":
filterDemo()
 
   
4955 ´Îä¯ÀÀ       32
Ïà¹ØÎÄÕÂ

»ùÓÚͼ¾í»ýÍøÂçµÄͼÉî¶Èѧϰ
×Ô¶¯¼ÝÊ»ÖеÄ3DÄ¿±ê¼ì²â
¹¤Òµ»úÆ÷ÈË¿ØÖÆÏµÍ³¼Ü¹¹½éÉÜ
ÏîĿʵս£ºÈçºÎ¹¹½¨ÖªÊ¶Í¼Æ×
 
Ïà¹ØÎĵµ

5GÈ˹¤ÖÇÄÜÎïÁªÍøµÄµäÐÍÓ¦ÓÃ
Éî¶ÈѧϰÔÚ×Ô¶¯¼ÝÊ»ÖеÄÓ¦ÓÃ
ͼÉñ¾­ÍøÂçÔÚ½»²æÑ§¿ÆÁìÓòµÄÓ¦ÓÃÑо¿
ÎÞÈË»úϵͳԭÀí
Ïà¹Ø¿Î³Ì

È˹¤ÖÇÄÜ¡¢»úÆ÷ѧϰ&TensorFlow
»úÆ÷ÈËÈí¼þ¿ª·¢¼¼Êõ
È˹¤ÖÇÄÜ£¬»úÆ÷ѧϰºÍÉî¶Èѧϰ
ͼÏñ´¦ÀíËã·¨·½·¨Óëʵ¼ù