python 그림 읽 기 임의의 범위 영역

5274 단어 python그림 읽 기
python 을 사용 하여 그림 처 리 를 진행 합 니 다.그림 의 임의의 영역 을 읽 고 1 차원 배열 로 전환 하여 후속 볼 륨 작업 에 편리 하도록 해 야 합 니 다.
다음은 두 가지 방법 으로 처리 합 니 다.
변환 함수

from PIL import Image
import numpy as np
import matplotlib.pyplot as plt

def ImageToMatrix(filename):
 im = Image.open(filename)  #     
 im.show()      #     
 width,height = im.size
 print("width is :" + str(width))
 print("height is :" + str(height))
 im = im.convert("L")    # pic --> mat   ,         ,           
 data = im.getdata()
 data = np.matrix(data,dtype='float')/255.0
 new_data = np.reshape(data * 255.0,(height,width))
 new_im = Image.fromarray(new_data)
 #             
 new_im.show()
 return new_data

def MatrixToImage(data):
 data = data*255
 new_im = Image.fromarray(data.astype(np.uint8))
 return new_im

'''
 convert(self, mode=None, matrix=None, dither=None, palette=0, colors=256)
  |  Returns a converted copy of this image. For the "P" mode, this
  |  method translates pixels through the palette. If mode is
  |  omitted, a mode is chosen so that all information in the image
  |  and the palette can be represented without a palette.
  |  
  |  The current version supports all possible conversions between
  |  "L", "RGB" and "CMYK." The **matrix** argument only supports "L"
  |  and "RGB".
  |  
  |  When translating a color image to black and white (mode "L"),
  |  the library uses the ITU-R 601-2 luma transform::
  |  
  |   L = R * 299/1000 + G * 587/1000 + B * 114/1000
  |  
  |  The default method of converting a greyscale ("L") or "RGB"
  |  image into a bilevel (mode "1") image uses Floyd-Steinberg
  |  dither to approximate the original image luminosity levels. If
  |  dither is NONE, all non-zero values are set to 255 (white). To
  |  use other thresholds, use the :py:meth:`~PIL.Image.Image.point`
  |  method.
  |  
  |  :param mode: The requested mode. See: :ref:`concept-modes`.
  |  :param matrix: An optional conversion matrix. If given, this
  |   should be 4- or 12-tuple containing floating point values.
  |  :param dither: Dithering method, used when converting from
  |   mode "RGB" to "P" or from "RGB" or "L" to "1".
  |   Available methods are NONE or FLOYDSTEINBERG (default).
  |  :param palette: Palette to use when converting from mode "RGB"
  |   to "P". Available palettes are WEB or ADAPTIVE.
  |  :param colors: Number of colors to use for the ADAPTIVE palette.
  |   Defaults to 256.
  |  :rtype: :py:class:`~PIL.Image.Image`
  |  :returns: An :py:class:`~PIL.Image.Image` object.

'''
원본 그림:

filepath = "./imgs/"

imgdata = ImageToMatrix("./imgs/0001.jpg")
print(type(imgdata))
print(imgdata.shape)

plt.imshow(imgdata) #     
plt.axis('off')  #       
plt.show()
실행 결과:

mpimg 함수

import matplotlib.pyplot as plt  # plt       
import matplotlib.image as mpimg  # mpimg       
import numpy as np

def readPic(picname, filename):
 img = mpimg.imread(picname)
 #    img        np.array  ,          
 weight,height,n = img.shape  #(512, 512, 3)
 print("the original pic: 
" + str(img)) plt.imshow(img) # plt.axis('off') # plt.show() # reshape , img_reshape = img.reshape(1,weight*height*n)[0] print("the 1-d image data :
"+str(img_reshape)) # (300,300) (12*12*3), img_cov = np.random.randint(1,2,(12,12,3)) # np.ones() , float , np.random.randint int for j in range(12): for i in range(12): img_cov[i][j] = img[300+i][300+j] img_reshape = img_cov.reshape(1,12*12*3)[0] print((img_cov)) print(img_reshape) # 12*12*3 plt.imshow(img_cov) plt.axis('off') plt.show() # # open: append , , with open(filename, 'a') as f: f.write(str(img_reshape)) return img_reshape if __name__ == '__main__': picname = './imgs/0001.jpg' readPic(picname, "data.py")
읽 은 데이터(12*12*3),픽 셀 마다 R,G,B 의 순서 로 배열 되 고 이 영역 이 그림 으로 표시 되 는 효과:

참고:python 에서 그림 을 읽 고 표시 하 는 두 가지 방법
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기