- ベストアンサー
線の画像を座標数値化するソフトや方法教えてください
線の画像を座標数値化するソフトや方法教えてください 質問は上記のとおりなのですが、 graphcelというフリーソフトを試してみましたが、 x vs yが1対1でないとだめで、 円形の図には向きませんでした。 上下に分けてみても正方形の図を用意しないとダメなので大変です。 何か方法はありますでしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
No.1の続きです。 書き込み文字数の都合です。 以下の関数を呼び出しますので、追加してください。 Function Deci(topnumber As Byte, lownumber As Byte) As Integer Dim number As Integer If &H80 > topnumber Then number = topnumber * 256 + lownumber Else number = (topnumber - 255) * 256 + lownumber - 256 End If Deci = number End Function
その他の回答 (1)
- Kelick
- ベストアンサー率22% (4/18)
私も、レーザープロジェクタ用のデータを作成するにあたり、同様の問題に取り組んだことがあります。 まず、フリーの「画像→ベクトルデータ変換ソフト」を探しました。 BMPからレーザープロジェクタの標準フォーマットとされる、ILDA形式のファイルを作成してくれるソフトです。 製作者の書き込み http://www.photonlexicon.com/forums/showthread.php/10288-My-simple-software-for-bitmap-to-ilda-file-conversion ダウンロード直リンク http://www.xs4all.nl/~hobbybob/laser/Software/bmp2ild/ ただし、このままでは使用に耐えなかったので、いったんEXCELに読み込み、自動的に不要部分(直線上の余分な点)などを処理するマクロを用意しました。←時間が無かった&大量に処理したかった。 ILDAはバイナリファイルなので、恐らくあなたの使用目的には則していないと思います。 そこで以下に、ILDAをEXCELで読み込んだ時の入力部分のマクロをあげておきます。 現物ママですので、解析、改造して使用してください。 '初期化 Dim name As String Dim InputFileName As String Dim InputFn As Long Dim buf() As Byte Dim i As Long Dim j As Long 'ファイル読み込み '読み込むファイル InputFileName = "D:\ILDA\test.ild" Worksheets("操作テーブル").Cells(2, 3).Value = InputFileName InputFn = FreeFile Open InputFileName For Binary As #InputFn ReDim buf(LOF(InputFn)) Get #InputFn, , buf Close #InputFn 'データの展開 'ヘッダテーブル展開 Worksheets("ILDAデータテーブル").Select '仕様 Cells(3, 1).Value = Chr(buf(0)) + Chr(buf(1)) + Chr(buf(2)) + Chr(buf(3)) 'ファイル形式 Cells(3, 2).Value = CStr(buf(4)) + CStr(buf(5)) + CStr(buf(6)) + CStr(buf(7)) 'フレーム名称 Cells(3, 3).Value = Chr(buf(8)) + Chr(buf(9)) + Chr(buf(10)) + Chr(buf(11)) + Chr(buf(12)) + Chr(buf(13)) + Chr(buf(14)) + Chr(buf(15)) '会社名 Cells(3, 4).Value = Chr(buf(16)) + Chr(buf(17)) + Chr(buf(18)) + Chr(buf(19)) + Chr(buf(20)) + Chr(buf(21)) + Chr(buf(22)) + Chr(buf(23)) '総ポイント数 Cells(3, 5).Value = CLng(buf(24) * 256 + buf(25)) 'フレーム番号 Cells(3, 6).Value = CLng(buf(26) * 256 + buf(27)) '総フレーム数 Cells(3, 7).Value = CLng(buf(28) * 256 + buf(29)) 'スキャナーヘッド番号 Cells(3, 8).Value = CInt(buf(30)) '予備 Cells(3, 9).Value = CInt(buf(31)) 'データテーブル展開 For i = 1 To Cells(3, 5) j = 6 * (i - 1) 'No. Cells(3 + i - 1, 11).Value = i 'X座標 Cells(3 + i - 1, 12).Value = Deci(buf(32 + j), buf(33 + j)) 'Y座標 Cells(3 + i - 1, 13).Value = Deci(buf(34 + j), buf(35 + j)) 'ステータス Cells(3 + i - 1, 14).Value = CLng(buf(36 + j)) '色情報 Cells(3 + i - 1, 15).Value = CLng(buf(37 + j)) Next