Hướng dẫn crop tiff image python - crop tiff hình ảnh con trăn

Tôi chưa quen với mã hóa Python. Tôi đã cố gắng cắt một loạt hình ảnh .tif được tạo bởi tia X. Bây giờ, nó trồng thành công và hiển thị hình ảnh được tạo ra nhưng tôi không thể lưu chúng. Hình ảnh khi được lưu ra để hoàn toàn đen. Dòng mã tôi đang sử dụng như sau:

    from PIL import Image
    import numpy
    startx = 421
    starty = 118
    stopx = 1182
    stopy = 336
    startfile = 1722
    stopfile = 1951
    for i in range(startfile,stopfile+1):
        image = Image.open("Filepath"+str(startfile)+".tif")
        cropped_image = image.crop((startx,starty,stopx,stopy))
        print("ipp"+str(startfile)+" cropped")
        image1 = cropped_image.rotate(180,0,1)
        image1.save("Filepath"+str(startfile),".tif")
        print("ipp"+str(startfile)+" saved")
        startfile = startfile + 1
        starty = starty + 3
        stopy = stopy + 3

Cần giúp đỡ!

Đã hỏi ngày 5 tháng 6 năm 2015 lúc 17:15Jun 5, 2015 at 17:15

Hướng dẫn crop tiff image python - crop tiff hình ảnh con trăn

6

Tôi nghĩ rằng lỗi nằm ở đây:

image1.save("Filepath"+str(startfile),".tif")

Đối số đầu tiên phải là tên tệp, bao gồm cả phần mở rộng. Đối số thứ hai là tùy chọn, và đưa ra một định dạng. Tên tệp bạn đưa ra, không có phần mở rộng. Dòng này nên là:

image1.save("Filepath"+str(startfile)+".tif")

Đã trả lời ngày 20 tháng 6 năm 2015 lúc 11:45Jun 20, 2015 at 11:45

Hướng dẫn crop tiff image python - crop tiff hình ảnh con trăn

1

Chiết xuất cây trồng từ thư mục tệp hình ảnh tiff lát gạch mà không cần tải toàn bộ trang bằng cách sử dụng tifffile

Tệp này chứa văn bản unicode hai chiều có thể được giải thích hoặc biên dịch khác với những gì xuất hiện dưới đây. Để xem xét, hãy mở tệp trong một trình soạn thảo cho thấy các ký tự Unicode ẩn. Tìm hiểu thêm về các ký tự unicode hai chiều

FromTifffileImportTifffile tifffile import TiffFile
Nhập khẩu numpy as np
defget_crop (trang, i0, j0, h, w): get_crop(page, i0, j0, h, w):
"" "Trích xuất một loại cây trồng từ thư mục tệp hình ảnh TIFF (IFD).
Chỉ có gạch Englobing khu vực cây trồng được tải và không phải toàn bộ trang.
Đây là hữu ích cho các hình ảnh toàn bộ slide lớn không thể phù hợp với RAM INT.
Thông số
----------
Trang: TIFFPAGE
Thư mục tệp hình ảnh TIFF (IFD) từ đó cây trồng phải được trích xuất.
i0, j0: int
Tọa độ của góc trên cùng bên trái của vụ mùa mong muốn.
dấu
Chiều cao cây trồng mong muốn.
W: Int
Chiều rộng cây trồng mong muốn.
Trả lại
-------
OUT: ndarray của hình dạng (hình ảnh, H, W, SamplePixel)
Chiết xuất cây trồng.
"" "
ifnotpage.is_tiled: not page.is_tiled:
RainsValueError ("Trang đầu vào phải được lát gạch.") ValueError("Input page must be tiled.")
im_width=page.imagewidth = page.imagewidth
im_height=page.imagelength = page.imagelength
ifh h < 1 or w < 1:
RainsValueerror ("H và W phải hoàn toàn tích cực.") ValueError("h and w must be strictly positive.")
ifi0 = im_width: i0 < 0 or j0 < 0 or i0 + h >= im_height or j0 + w >= im_width:
RainsValueError ("Khu vực trồng được yêu cầu nằm ngoài giới hạn hình ảnh.") ValueError("Requested crop area is out of image bounds.")
TILE_WIDTH, TILE_HEIGHT = PAGE.TILEWIDTH, PAGE.TILELED, tile_height = page.tilewidth, page.tilelength
i1, j1 = i0+h, j0+w, j1 = i0 + h, j0 + w
Tile_i0, Tile_J0 = I0 // Tile_Height, J0 // Tile_Width, tile_j0 = i0 // tile_height, j0 // tile_width
Tile_I1, Tile_J1 = NP.CEIL ([I1/TILE_HEIGHT, J1/TILE_WIDTH]). ASTYPE (int), tile_j1 = np.ceil([i1 / tile_height, j1 / tile_width]).astype(int)
Tile_per_line = int (np.ceil (IM_WIDTH/TILE_WIDTH))) = int(np.ceil(im_width / tile_width))
out = np.empty ((page.imagedepth, = np.empty((page.imagedepth,
(TILE_I1-tile_I0)tile_i1 - tile_i0) * tile_height,
(Tile_j1-tile_j0) *TILE_WIDTH,tile_j1 - tile_j0) * tile_width,
page.samplesperpixel), dtype = page.dtype).samplesperpixel), dtype=page.dtype)
fh=page.parent.filehandle = page.parent.filehandle
jpegtables = page.tags.get ('jpegtables', none) = page.tags.get('JPEGTables', None)
ifjpegtablesisnotnone: jpegtables is not None:
jpegtables=jpegtables.value = jpegtables.value
foriinrange (tile_i0, tile_i1): i in range(tile_i0, tile_i1):
ForJinRange (Tile_J0, Tile_J1): j in range(tile_j0, tile_j1):
index = int (i*tile_per_line+j) = int(i * tile_per_line + j)
offset = page.dataoffsets [index] = page.dataoffsets[index]
bytecount = page.databytecounts [index] = page.databytecounts[index]
fh.seek (bù).seek(offset)
data = fh.read (bytecount) = fh.read(bytecount)
Ngói, Chỉ số, Shape = Page.Decode (Data, Index, JPegTables), indices, shape = page.decode(data, index, jpegtables)
im_i = (i-tile_i0) *tile_height = (i - tile_i0) * tile_height
im_j = (j-tile_j0) *tile_width = (j - tile_j0) * tile_width
ra [:, im_i: im_i+tile_height, im_j: im_j+tile_width,:] = tile[:, im_i: im_i + tile_height, im_j: im_j + tile_width, :] = tile
im_i0=i0-tile_i0*tile_height = i0 - tile_i0 * tile_height
im_j0=j0-tile_j0*tile_width = j0 - tile_j0 * tile_width
Trả về [:, IM_I0: IM_I0+H, IM_J0: IM_J0+W,:] out[:, im_i0: im_i0 + h, im_j0: im_j0 + w, :]