python 이미지 처리 기본 작업 요약(PIL 라 이브 러 리,Matplotlib 및 Numpy)
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.Numpy1.이미지 배열 표시
이미지 데이터 에 대해 아래 의 예 에서 이 점 을 논술 하 였 다.
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 이미지 처리 작업 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.