±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚ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.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 #ͼƬµÄ¸ñʽ |
ͼƬµÄ±£´æ
¾ÍÒ»ÐдúÂ룬·Ç³£¼òµ¥¡£ÕâÐдúÂë²»½öÄܱ£´æÍ¼Æ¬£¬»¹ÊÇת»»¸ñʽ£¬Èç±¾ÀýÖУ¬¾ÍÓÉÔÀ´µÄ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µÄÈýά¾ØÕó,Òò´Ë£¬ÎÒÃÇ¿ÉÒÔʹÓÃ
À´·ÃÎÊÏñËØÖµ¡£
Àý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:
ͼƬ·´É«£¬ÀàËÆÓÚ¼¯ºÏ²Ù×÷ÖеÄÇó²¹¼¯£¬×î´óֵΪMax£¬Ã¿¸öÏñËØ×ö¼õ·¨£¬È¡³ö·´É«.
¹«Ê½
lighter:
ImageChops.lighter(image1,
image2) |
darker:
ImageChops.darker(image1,
image2) |
difference:
ImageChops.difference(image1,
image2) |
Çó³öÁ½ÕÅͼƬµÄ¾ø¶ÔÖµ£¬ÖðÏñËØµÄ×ö¼õ·¨
multiply:
ImageChops.multiply(image1,
image2) |
½«Á½ÕÅͼƬ»¥Ïàµþ¼Ó£¬Èç¹ûÓô¿ºÚÉ«ÓëijͼƬ½øÐеþ¼Ó²Ù×÷£¬»áµÃµ½Ò»¸ö´¿ºÚÉ«µÄͼƬ¡£Èç¹ûÓô¿°×É«ÓëͼƬ×÷µþ¼Ó£¬Í¼Æ¬²»ÊÜÓ°Ïì¡£
¼ÆËãµÄ¹«Ê½ÈçϹ«Ê½
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() |
|