Tôi là người mới hoàn thành xử lý hình ảnh và tôi đoán điều này khá dễ thực hiện, nhưng tôi không biết thuật ngữ đó. Về cơ bản tôi có một hình ảnh đen trắng, tôi chỉ đơn giản là muốn phủ lên một lớp phủ màu cho hình ảnh, để tôi có hình ảnh được phủ xanh lục đọc và màu vàng giống như hình ảnh được hiển thị bên dưới (tôi thực sự có thể làm được) t hiển thị bởi vì tôi không có đủ danh tiếng để làm như vậy - grrrrrr). Hãy tưởng tượng tôi có một hình ảnh vật lý, và một lớp phủ màu xanh lá cây/đỏ/xanh/vàng, mà tôi đặt trên đầu trang của hình ảnh. Lý tưởng nhất là tôi muốn làm điều này bằng cách sử dụng Python PIL nhưng tôi sẽ rất vui khi làm điều đó bằng cách sử dụng ImageMagik, nhưng một trong hai cách tôi cần để có thể kịch bản quá trình như tôi có 100 hoặc hơn hình ảnh mà tôi cần để thực hiện quy trình.Áp dụng lớp phủ màu cho hình ảnh trong PIL hoặc Imagemagik
Trả lời
Dưới đây là đoạn mã cho biết cách sử dụng scikit-image để phủ màu trên hình ảnh cấp độ xám. Ý tưởng là chuyển đổi cả hai hình ảnh sang không gian màu HSV, và sau đó thay thế các giá trị màu sắc và độ bão hòa của hình ảnh cấp độ xám bằng hình ảnh của mặt nạ màu.
from skimage import data, color, io, img_as_float
import numpy as np
import matplotlib.pyplot as plt
alpha = 0.6
img = img_as_float(data.camera())
rows, cols = img.shape
# Construct a colour image to superimpose
color_mask = np.zeros((rows, cols, 3))
color_mask[30:140, 30:140] = [1, 0, 0] # Red block
color_mask[170:270, 40:120] = [0, 1, 0] # Green block
color_mask[200:350, 200:350] = [0, 0, 1] # Blue block
# Construct RGB version of grey-level image
img_color = np.dstack((img, img, img))
# Convert the input image and color mask to Hue Saturation Value (HSV)
# colorspace
img_hsv = color.rgb2hsv(img_color)
color_mask_hsv = color.rgb2hsv(color_mask)
# Replace the hue and saturation of the original image
# with that of the color mask
img_hsv[..., 0] = color_mask_hsv[..., 0]
img_hsv[..., 1] = color_mask_hsv[..., 1] * alpha
img_masked = color.hsv2rgb(img_hsv)
# Display the output
f, (ax0, ax1, ax2) = plt.subplots(1, 3,
subplot_kw={'xticks': [], 'yticks': []})
ax0.imshow(img, cmap=plt.cm.gray)
ax1.imshow(color_mask)
ax2.imshow(img_masked)
plt.show()
Dưới đây là kết quả:
tôi đã kết thúc việc tìm kiếm một câu trả lời này sử dụng PIL, về cơ bản tạo ra một hình ảnh mới với một màu khối, và sau đó sắp xếp bố cục hình ảnh ban đầu, với điều này hình ảnh mới, sử dụng mặt nạ xác định lớp alpha trong suốt. Mã dưới đây (thích nghi để chuyển đổi tất cả các hình ảnh trong một thư mục có tên dữ liệu, xuất ra thành một thư mục có tên đầu ra):
from PIL import Image
import os
dataFiles = os.listdir('data/')
for filename in dataFiles:
#strip off the file extension
name = os.path.splitext(filename)[0]
bw = Image.open('data/%s' %(filename,))
#create the coloured overlays
red = Image.new('RGB',bw.size,(255,0,0))
green = Image.new('RGB',bw.size,(0,255,0))
blue = Image.new('RGB',bw.size,(0,0,255))
yellow = Image.new('RGB',bw.size,(255,255,0))
#create a mask using RGBA to define an alpha channel to make the overlay transparent
mask = Image.new('RGBA',bw.size,(0,0,0,123))
Image.composite(bw,red,mask).convert('RGB').save('output/%sr.bmp' % (name,))
Image.composite(bw,green,mask).convert('RGB').save('output/%sg.bmp' % (name,))
Image.composite(bw,blue,mask).convert('RGB').save('output/%sb.bmp' % (name,))
Image.composite(bw,yellow,mask).convert('RGB').save('output/%sy.bmp' % (name,))
Không thể gửi những hình ảnh đầu ra không may do thiếu đại diện.
Cảm ơn và đây là một số đại diện cho bạn – LoveGandhi
Xem ý chính của tôi https://gist.github.com/Puriney/8f89b43d96ddcaf0f560150d2ff8297e
chức năng cốt lõi qua opencv
được mô tả như dưới đây.
def mask_color_img(img, mask, color=[0, 255, 255], alpha=0.3):
'''
img: cv2 image
mask: bool or np.where
color: BGR triplet [_, _, _]. Default: [0, 255, 255] is yellow.
alpha: float [0, 1].
Ref: http://www.pyimagesearch.com/2016/03/07/transparent-overlays-with-opencv/
'''
out = img.copy()
img_layer = img.copy()
img_layer[mask] = color
out = cv2.addWeighted(img_layer, alpha, out, 1 - alpha, 0, out)
return(out)
Thêm lớp phủ màu và trong suốt ở hai RGB hoặc hình ảnh màu xám có thể làm việc:
- 1. Lớp phủ hình ảnh trong một hình ảnh
- 2. thêm văn bản trên hình ảnh trong python bằng imagemagik/PIL
- 3. Lớp phủ màu di chuột hình ảnh jQuery
- 4. Lớp phủ màn hình cho ảnh chụp màn hình
- 5. Lớp phủ văn bản và màu nền trên hình ảnh
- 6. OpenCV - Áp dụng mặt nạ cho hình ảnh màu
- 7. Áp dụng lớp CSS cho hình ảnh trong asp: Hyperlink?
- 8. Lớp phủ hình ảnh Jquery?
- 9. Áp dụng một lớp phủ (bộ lọc hình ảnh) vào một Bitmap
- 10. jQuery: có cách nào để áp dụng màu (màu) cho hình ảnh?
- 11. Lớp phủ hình ảnh với ma trận
- 12. Kết hợp nền với hình ảnh trong suốt trong PIL
- 13. OCR cung cấp lớp phủ HTML cho hình ảnh?
- 14. Làm thế nào để chuyển đổi mảng Numpy sang hình ảnh PIL áp dụng matplotlib colormap
- 15. Lớp phủ hình ảnh CSS có màu sắc và độ trong suốt
- 16. Lớp phủ màu Android - Chế độ PorterDuff
- 17. Cách che phủ hình ảnh trong javascript?
- 18. Tại sao hộp thoại jquery-ui-sử dụng cả màu nền và hình ảnh cho lớp phủ?
- 19. Lớp phủ hình ảnh ngược tam giác CSS
- 20. Hình ảnh phác thảo sử dụng python/PIL
- 21. Lớp phủ màu đen và trắng cho một MKMapView
- 22. Thư viện hình ảnh Python (PIL) Vẽ - Hình chữ nhật tròn với độ dốc
- 23. Hình thu nhỏ lớp phủ có nút xóa hình ảnh?
- 24. Thêm màu vào hình ảnh
- 25. Sử dụng python PIL để biến hình ảnh RGB thành hình ảnh đen trắng tinh khiết
- 26. Cắt hình ảnh bằng PIL trong python
- 27. Thay đổi hiệu ứng màu/hiệu ứng hình ảnh/lớp phủ jquery-ui
- 28. Tạo một lớp phủ lưới trên hình ảnh
- 29. Cách TẠO một gif trong suốt (hoặc png) với PIL (hình ảnh python)
- 30. Lớp phủ hình ảnh có hình ảnh được chụp bằng camera trong android
Cảm ơn Stefan, đó là rất hữu ích. – Ctrlspc
Cảm ơn Stefan, tôi thường xuyên sử dụng nó. Làm thế nào điều này có thể được mở rộng vượt quá 3 màu sau một sơ đồ màu, ví dụ như plt.cm.cmap? Tôi có 7 bản đồ nhị phân, tôi cần phủ lên hình ảnh màu xám. – iratzhash
plt.cm.viridis (hoặc bất kỳ màu nào) sẽ trả lại giá trị RGB cho bất kỳ cuộc gọi nào, ví dụ: "Trong [10]: plt.cm.viridis (15) Out [10]: (0.28192400000000001, 0.089665999999999996, 0.41241499999999998, 1.0)". Bạn cũng có thể hoạt động trên toàn bộ mảng, ví dụ: "plt.cm.viridis (my_image)" để lấy các giá trị RGB phù hợp. –