6

私はPythonが初めてなので、しばらくお待ちください。
基本的に、私のスクリプトは次のように実行する必要があります。

1) 画像を読み込み、R、G、B チャネルに分割します
。2) その画像の領域を svg ファイルとして保存された既存のパスでマークし、
3) この領域の R、G、B 値を使用していくつかの計算を実行します。
(さらに、計算の結果に応じて、画像をフォルダー A または B のいずれかに送信します)

1) と 3) の一部を実行しましたが、現在の問題は、svg ファイルを読み込んで画像に適用することです。
画像は魚眼レンズで撮影した写真です。黒い背景ではなく、実際の写真の RGB 値を取得したいだけです。GIMP(円ではなく)で目的のパスを描画して、svgファイルを作成しました。

私の質問は:
Python で既存の svg ファイルをロード (およびパスとして読み取り) し、そのパスを画像に適用する方法は?

それを行う簡単な方法があると確信していますが、まだ見つけていません。

ヒントや推奨事項をいただければ幸いです。


編集:

svg ファイル:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
             `"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">

<svg xmlns="http://www.w3.org/2000/svg"
     width="22.2222in" height="16.6667in"
     viewBox="0 0 1600 1200">
  <path id="Auswahl"
        fill="none" stroke="black" stroke-width="1"
        d="M 848.00,103.21
           C 848.00,103.21 861.00,103.96 861.00,103.96
             891.77,105.30 921.91,109.93 952.00,116.58
             988.30,124.59 1023.25,137.24 1057.00,152.69
             1210.78,223.11 1322.55,368.09 1353.61,534.00
             1358.02,557.54 1361.00,581.11 1362.04,605.00
             1362.04,605.00 1363.00,616.00 1363.00,616.00
             1363.00,616.00 1363.00,649.00 1363.00,649.00
             1363.00,649.00 1362.04,662.00 1362.04,662.00
             1360.12,705.99 1352.05,749.92 1338.98,792.00
             1289.63,950.77 1167.62,1077.58 1011.00,1133.31
             962.90,1150.42 911.98,1160.82 861.00,1163.04
             861.00,1163.04 848.00,1164.00 848.00,1164.00
             848.00,1164.00 815.00,1164.00 815.00,1164.00
             815.00,1164.00 804.00,1163.04 804.00,1163.04
             756.47,1160.97 709.15,1151.72 664.00,1136.67
             608.47,1118.16 556.55,1090.63 510.00,1055.12
             469.68,1024.36 434.97,988.81 404.88,948.00
             288.05,789.50 269.64,577.90 355.26,401.00
             418.58,270.18 535.32,170.13 674.00,127.02
             700.27,118.86 729.73,111.96 757.00,108.28
             757.00,108.28 795.00,104.17 795.00,104.17
             795.00,104.17 809.00,103.21 809.00,103.21
             809.00,103.21 848.00,103.21 848.00,103.21 Z" />
</svg>

画像へのリンク: http://img153.imageshack.us/img153/5330/skybig.jpg

4

2 に答える 2

3

ベクトル画像をサポートしていないため、SVG ファイルをビットマップにラスタライズしてから、PIL を使用して元の画像に重ね合わせる必要があります。

少し前に調査を行いましたが、python でこれをサポートしていることがわかった唯一のライブラリはcairoです(ここでも、SVG ラスタライズ ツールに関する風景がここ数か月で変わった可能性があります)。

他の方法 (これが要件を満たしているとは思わない) は、元のビットマップ イメージを SVG の背景として適用することですが、これは不気味に聞こえます... ;-)

于 2010-08-30T17:15:10.840 に答える
0

pip install svglib これを cmd に入力すると、svglib がインストールされます SVG を読み取って変換するための純粋な Python ライブラリ svglib または doc の本を読む

于 2022-01-07T10:54:41.737 に答える