python 이미지 처리 기본 작업 요약(PIL 라 이브 러 리,Matplotlib 및 Numpy)

그림 에 대한 PIL 라 이브 러 리 의 기본 동작
1.그림 읽 기
PIL 인터넷 에 많은 소개 가 있 는데 여 기 는 더 이상 설명 하지 않 겠 습 니 다.그림 을 직접 읽 고 그 레이스 케 일 로 변환 하여 인쇄 합 니 다.

from  PIL  import Image
import matplotlib.pyplot as plt
pil_im = Image.open("empire.jpeg")
pil_image = pil_im.convert("L")
plt.gray()
plt.imshow(pil_image)
plt.show()
출력 은 다음 과 같 습 니 다:

2.그림 형식 변환
PIL 은 그림 을 다양한 형식 으로 저장 할 수 있 습 니 다.다음은 PNG 형식 파일 을 JPG 형식 으로 저장 합 니 다.

from PIL import Image
import glob
import os
filelist = glob.glob("E:/pythonProject1/filelist/*.png")
for infile in filelist:
    outfile = os.path.splitext(infile)[0]+'.jpg'
 
    if infile  != outfile:
        try:
            Image.open(infile).save(outfile)
        except IOError:
            print("cannot convert", infile)
출력 결 과 는 다음 과 같다.

3.출력 폴 더 에 있 는 모든 그림 의 파일 이름 목록

import os
def get_imlist(path):
    """       JPG        """
    return [os.path.join(path,f)for f in os.listdir(path) if f.endswith('.jpg')]
print(get_imlist("E:/pythonProject1/filelist/"))
파일 이름 목록 으로 출력
2.Matplotlib
1.그림,점,선 그리 기

from PIL import Image
from pylab import *
 
#        
im = array(Image.open("empire.jpeg"))
 
#    
imshow(im)
 
#   
x = [100, 100, 400, 400]
y = [200, 500, 200, 500]
 
#           
plot(x, y)#       
# plot(x, y, 'r*')#      
# plot(x, y, 'go-')#         
# plot(x, y, 'ks')#            
 
#          
plot(x[:3], y[:3])
axis('off')
 
#    ,       
titles = ['empire']
plt.title = titles
show()
위의 코드 는 먼저 원본 그림 을 그리고 x 와 y 목록 에서 지정 한 것 을 그립 니 다. x 좌표 와 y 좌표 에 빨간색 별 모양 의 표지 점 을 그리고 마지막 으로 두 목록 에 표 시 된 두 점 사이 에 선 을 그립 니 다.그림%1 개의 캡 션 을 편 집 했 습 니 다.

2.이미지 윤곽 과 직사 도
윤곽 을 그 리 려 면 각 좌표[x,y]의 픽 셀 값 에 같은 한도 값 을 가 해 야 하기 때문에 먼저 그림 을 그 레이스 케 일 화해 야 합 니 다.여 기 는 PIL 을 사용 합 니 다.  convert()  방법 은 그림 을 그 레이스 케 일 로 변환 합 니 다.그림 의 직사 도 는 이 그림 의 픽 셀 값 분포 상황 을 나타 내 는 데 쓰 인 다.

from PIL import Image
from pylab import *
 
#         
im = array(Image.open("empire.jpeg").convert('L'))
 
#      
figure()
#       
gray()
#             
contour(im, origin = 'image')#      
axis('equal')
axis('off')
show()
#      
figure
hist(im.flatten(), 128)#       
show()
그림 윤곽 도 출력 은 다음 과 같 습 니 다.

출력 그림 직사 도 는 다음 과 같 습 니 다.

3.대화 식 레이 블
그림 에 점 을 표시 하거나 훈련 데 이 터 를 표시 합 니 다PyLab  창고 안의  ginput()  함수 가 상호작용 표 시 를 실현 할 수 있다.그림 에서 세 번 클릭 하면 프로그램 은 이 세 점 의 좌표 점[x,y]을 x 목록 에 자동 으로 저장 합 니 다.

from PIL import Image
from pylab import *
 
im = array(Image.open("empire.jpeg"))
imshow(im)
print("please click 3 points")
x = ginput(3)
print("you clicked",x)
show()
3.Numpy
1.이미지 배열 표시
이미지 데이터 에 대해 아래 의 예 에서 이 점 을 논술 하 였 다.

from PIL import Image
import numpy as np
 
im = np.array(Image.open("empire.jpeg"))
print(im.shape,im.dtype)
출력:
(1024, 683, 3) uint8
 각 줄 의 첫 번 째 원 조 는 이미지 배열 의 크기(줄,열,색상 채널)를 나타 내 고 이 어 진 문자열 은 배열 요소 의 데이터 형식 을 나타 낸다.그림 은 보통 기호 가 없 는 8 비트 정수(uint 8)로 인 코딩 되 기 때문에 그림 을 불 러 오고 배열 로 변환 합 니 다.배열 의 데이터 형식 은'uint 8'입 니 다.
2.그 레이스 케 일 변환
그림 을 그 레이스 케 일 로 변환 합 니 다.다음 과 같 습 니 다.

from PIL import Image
import numpy as np
 
im = np.array(Image.open("empire.jpeg"))
print(im.shape,im.dtype)
 
from PIL import Image
from matplotlib.pylab import plt
from numpy import *
 
im1 = array(Image.open('empire.jpeg').convert('L'))
im2 = 255 - im1 #         
im3 = (100.0/255) * im1 + 100 #       100-200  
im4 = 255.0 * (im1/255) ** 2 #               
 
images = [im1, im2, im3, im4]
titles = ["f(x) = x", "f(x) = 255 - x", "f(x) = (100/255)*x +100", "f(x) = 255*(x/255)^2"]
#                
print(int(im1.min()),int(im1.max()))
print(int(im2.min()),int(im2.max()))
print(int(im3.min()),int(im3.max()))
print(int(im4.min()),int(im4.max()))
 
for i in range(4):
    plt.subplot(2, 2, i+1)#2 2 ,       
    plt.imshow(images[i])#    
    plt.title(titles[i])#    
    plt.gray()
    # plt.xticks([])
    # plt.yticks([])
    plt.axis('equal')
    plt.axis('off')
plt.show()
출력 접속 은 다음 과 같 습 니 다.

총결산
python 이미지 처리 기본 작업 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 python 이미지 처리 작업 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기