Pythonで色の範囲を白に変更する

信仰

次のコードを使用して、写真の特定の色(グレー)を白に変更します。しかし、コードは遅すぎます。任意の提案や代替案を歓迎します。

import os
import numpy as np
from PIL import Image
for j in range(1,160):
    im = Image.open(str(j)+'.jpg')
    data = np.array(im)
    for i in (range(205,254)):
        r1, g1, b1 = i, i, i # Original 
        r2, g2, b2 = 255, 255, 255 # Replacement

        red, green, blue = data[:,:,0], data[:,:,1], data[:,:,2]
        mask = (red == r1) & (green == g1) & (blue == b1)
        data[:,:,:3][mask] = [r2, g2, b2]

        im = Image.fromarray(data)
        im.save(os.getcwd()+'\\conv\\'+str(j)+'.jpg')
jcupitt

最後にインデントがないので、各出力画像を50回保存していると思います。コードを次のように変更しました。

import numpy as np
from PIL import Image

for j in range(0, 10):
    filename = f'{str(j)}.jpg'
    print(f'processing {filename} ...')

    im = Image.open(filename) 
    data = np.array(im)
    for i in range(205, 254):
        r1, g1, b1 = i, i, i # Original 
        r2, g2, b2 = 255, 255, 255 # Replacement

        red, green, blue = data[:,:,0], data[:,:,1], data[:,:,2]
        mask = (red == r1) & (green == g1) & (blue == b1)
        data[:,:,:3][mask] = [r2, g2, b2]

    im = Image.fromarray(data)
    im.save(f'x_{filename}')

160はテストに時間がかかりすぎたので、10枚の画像で試してみました。私のラップトップでは、6k x 4kのjpg画像が表示されます。

$ /usr/bin/time -f %M:%e ../grey.py 
processing 0.jpg ...
processing 8.jpg ...
processing 9.jpg ...
435588:70.75

つまり、70.8秒と436MBのメモリです。

pyvipsを使用してプログラムを書き直しましたこの種のことでは通常、PIL、numpy、opencvよりもはるかに高速です。pyvipsバージョンは次のようになります。

import pyvips

for j in range(0, 10):
    filename = f'{str(j)}.jpg'
    print(f'processing {filename} ...')

    im = pyvips.Image.new_from_file(filename, access='sequential')

    # find all pixels where RGB are equal
    mask = (im[0] == im[1]) & (im[1] == im[2])

    # we also need g > 204 
    mask &= im[1] > 204

    # and send all those pixels to 255
    im = mask.ifthenelse(255, im)

    im.write_to_file(f'x_{filename}')

私のラップトップで私は見る:

$ /usr/bin/time -f %M:%e ../grey-vips.py 
processing 0.jpg ...
...
processing 8.jpg ...
processing 9.jpg ...
152084:4.87

4.9秒と152MBのメモリ。

もちろん、それは少し不公平です。Amitayが言うように、あなたのコードは範囲をマスクするのではなくループしていますが、それを修正するのに十分なnumpyを私はよく知りません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Pythonでの反復中に範囲の値を変更する

分類Dev

VIPS / Pythonで特定の色調範囲に変換を適用する方法

分類Dev

Ionicでイオン範囲の色を動的に変更するにはどうすればよいですか?

分類Dev

materializecssの範囲スライダーの色を変更する

分類Dev

色の特定の範囲を変更する

分類Dev

「label.text」範囲の色を変更する

分類Dev

iOSでUIPickerViewのテキストの色を白に変更する方法

分類Dev

VBAで数値の範囲を負に変更する

分類Dev

白以外の背景でテキストの色を白に変更します

分類Dev

javascript-2つの色の範囲の間でテキストの色を複数回変更する

分類Dev

ExcelVBAで値の範囲を別の値の範囲で変更する方法

分類Dev

ggplotの変数の範囲を表す線の色を変更するにはどうすればよいですか?

分類Dev

範囲のすべてのループで範囲を変更する

分類Dev

fadeIn()の色を白から特定の色に変更します

分類Dev

Pythonで整数のリストを範囲に変換する

分類Dev

Pythonで整数値の範囲を色にマッピングする

分類Dev

ユーザーの位置がその範囲内にある場合は、円の色を変更します

分類Dev

RangeSliderで軸範囲を変更する

分類Dev

Excelで列/範囲を変更する

分類Dev

rxvtの色を黒地に白に変更するにはどうすればよいですか?

分類Dev

rxvtの色を黒地に白に変更するにはどうすればよいですか?

分類Dev

Python:特定の範囲を超えた場合、プロットの線の色を変更することは可能ですか?

分類Dev

PDFを白黒から特定の色に変更するにはどうすればよいですか?

分類Dev

各カスタム範囲ステップでアイコンの色を変更する方法

分類Dev

PythonでRプロットを再作成-3番目の値の範囲に基づいて色を変更します

分類Dev

範囲スライダー-塗りつぶされたときに目盛りの色を変更するにはどうすればよいですか?

分類Dev

plot(imshow)の色の範囲を変更しますか?

分類Dev

Python-円グラフでautopctテキストの色を白に変更するにはどうすればよいですか?

分類Dev

Python-円グラフでautopctテキストの色を白に変更するにはどうすればよいですか?

Related 関連記事

  1. 1

    Pythonでの反復中に範囲の値を変更する

  2. 2

    VIPS / Pythonで特定の色調範囲に変換を適用する方法

  3. 3

    Ionicでイオン範囲の色を動的に変更するにはどうすればよいですか?

  4. 4

    materializecssの範囲スライダーの色を変更する

  5. 5

    色の特定の範囲を変更する

  6. 6

    「label.text」範囲の色を変更する

  7. 7

    iOSでUIPickerViewのテキストの色を白に変更する方法

  8. 8

    VBAで数値の範囲を負に変更する

  9. 9

    白以外の背景でテキストの色を白に変更します

  10. 10

    javascript-2つの色の範囲の間でテキストの色を複数回変更する

  11. 11

    ExcelVBAで値の範囲を別の値の範囲で変更する方法

  12. 12

    ggplotの変数の範囲を表す線の色を変更するにはどうすればよいですか?

  13. 13

    範囲のすべてのループで範囲を変更する

  14. 14

    fadeIn()の色を白から特定の色に変更します

  15. 15

    Pythonで整数のリストを範囲に変換する

  16. 16

    Pythonで整数値の範囲を色にマッピングする

  17. 17

    ユーザーの位置がその範囲内にある場合は、円の色を変更します

  18. 18

    RangeSliderで軸範囲を変更する

  19. 19

    Excelで列/範囲を変更する

  20. 20

    rxvtの色を黒地に白に変更するにはどうすればよいですか?

  21. 21

    rxvtの色を黒地に白に変更するにはどうすればよいですか?

  22. 22

    Python:特定の範囲を超えた場合、プロットの線の色を変更することは可能ですか?

  23. 23

    PDFを白黒から特定の色に変更するにはどうすればよいですか?

  24. 24

    各カスタム範囲ステップでアイコンの色を変更する方法

  25. 25

    PythonでRプロットを再作成-3番目の値の範囲に基づいて色を変更します

  26. 26

    範囲スライダー-塗りつぶされたときに目盛りの色を変更するにはどうすればよいですか?

  27. 27

    plot(imshow)の色の範囲を変更しますか?

  28. 28

    Python-円グラフでautopctテキストの色を白に変更するにはどうすればよいですか?

  29. 29

    Python-円グラフでautopctテキストの色を白に変更するにはどうすればよいですか?

ホットタグ

アーカイブ