1

私はこれに対して可能な解決法を探しましたが、すべての答えが本当に明確でないか不完全です。この画像にグレースケール画像にグラデーションマップを適用するには

enter image description here

:(#00aeefに#の582f91)

image = Image.open('image.jpg') 

私はこのグラデーションを適用するにはどうすればよい:

ので、私はメモリにアップロードされた画像を持っていると言う

enter image description here

だから私おかげで先に

enter image description here

:tがこのなります。

答えて

0

私はこれを達成するためにcythonスクリプト(高フレームレートで更新する必要がある)を使用して以前にこの問題を解決しました。ここで、ファンクションへの入力cmapは、行列の平坦な配列で、各行は色に対応し、R G B値にcoloumnsします。私はウェブサイトを使ってグラデーションを生成しましたが、どちらを覚えていないのでしょうか。画像は速度のために平坦化され、0〜255のint値の間でスケーリングされました。あなたが使用してcythonをインストールしたらこれはその後、交流ファイルとの.soを作成する必要があり

pip install cython 
pyhton setup.py build_ext --inplace 

ピップつまり、コマンドラインから設定スクリプトを実行する必要がありますcython機能をインポートして使用できるように

ファイル。

Cythonコード:

import numpy as np 
cimport numpy as np 
cimport cython 

DTYPE1 = np.float 
ctypedef np.float_t DTYPE1_t 

DTYPE2 = np.int 
ctypedef np.int_t DTYPE2_t 

@cython.boundscheck(False) 
@cython.wraparound(False) 

def mat_to_im(np.ndarray[DTYPE2_t, ndim=1] data, np.ndarray[DTYPE2_t, ndim=1] cmap): 

    cdef int wid = data.size 
    cdef int x, x1, y 

    cdef np.ndarray[DTYPE2_t, ndim=1] im = np.zeros([wid*3], dtype=DTYPE2) 

    for x in range(wid): 

     x1 = x*3 
     y = data[x]*3 

     im[x1] = cmap[y] 
     im[x1+1] = cmap[y+1] 
     im[x1+2] = cmap[y+2] 

return im 

セットアップファイル:

from distutils.core import setup, Extension 
from Cython.Build import cythonize 
import numpy 

setup(
    name='image convert', 
    version='1', 
    description='color map images', 
    author='scooper', 
    install_requires=['numpy'], 
    ext_modules=cythonize([ 
     Extension("image_convert", ["image_convert.pyx"], include_dirs=[numpy.get_include()])]) 
) 

これは、すべての問題(私はより大きなコードファイルからセットアップを切ってきたし、それをテストしていない)を支援する必要があります。http://cython.readthedocs.io/en/latest/src/quickstart/build.html

+0

基本的にマッピングを使用してピクセル値を個別に再割り当てする必要がありました。返されたイメージは、元のイメージのサイズに再形成されました。 – samocooper

+0

ありがとうございました。私は今それを試してみましょう。 –

+0

Umm、ok。私はこれまでCythonを使ったことがありません。あなたは私にクイックガイドを教えてもらえますか?あなたの機能をどうやって使うのですか? –

0

だけLinearSegmentedColormapを使用します。

# make a cmap 
mycm=matplotlib.colors.LinearSegmentedColormap.from_list('',['#582f91', '#00aeef']) 

# apply on a canal 
imgrad=mycm(image[:,:,0]) 
関連する問題