電子書籍の厳選無料作品が豊富!

線の画像を座標数値化するソフトや方法教えてください

質問は上記のとおりなのですが、
graphcelというフリーソフトを試してみましたが、
x vs yが1対1でないとだめで、
円形の図には向きませんでした。
上下に分けてみても正方形の図を用意しないとダメなので大変です。

何か方法はありますでしょうか。

A 回答 (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
    • good
    • 0

私も、レーザープロジェクタ用のデータを作成するにあたり、同様の問題に取り組んだことがあります。



まず、フリーの「画像→ベクトルデータ変換ソフト」を探しました。
BMPからレーザープロジェクタの標準フォーマットとされる、ILDA形式のファイルを作成してくれるソフトです。

製作者の書き込み
http://www.photonlexicon.com/forums/showthread.p …

ダウンロード直リンク
http://www.xs4all.nl/~hobbybob/laser/Software/bm …

ただし、このままでは使用に耐えなかったので、いったん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
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!