質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

1回答

3114閲覧

カメラ2台を用いて距離計測

leliel1193

総合スコア9

VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2018/11/05 02:27

編集2022/01/12 10:55

前提・実現したいこと

カメラを2つ用いてある対象物との距離を測定したいです。
Labviewを用いて作っていますが、追加のモジュールを用意していないのでTCP通信、あるいはほかの方法でLabview側に画像を送信してLabview内で距離測定の処理を行いたいです。
また、Labview以外(C++,C#等)でカメラを二台用いて距離計測出来るのであればそちらのほうもご教授お願いしたいです。

発生している問題・エラーメッセージ

VBとLabview間で、文字列の送受信を行うプログラムは出来たのですが、画像をLabview側に送る方法が分からないです。
また、Labviewへ受信した後、どのように処理をすれば距離計測ができるのか調べたのですがいまいち理解できませんでした。

該当のソースコード

VB

1送信側プログラム 2 3Public Class Form1 4 5 Private ns As System.Net.Sockets.NetworkStream 6 7 8 Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 9 10 Try 11 Dim tcp As New System.Net.Sockets.TcpClient("localhost", 6200) 12 ns = TCP.GetStream() 13 ns.ReadTimeout = 10000 14 ns.WriteTimeout = 10000 15 MessageBox.Show("接続成功") 16 Catch ex As Exception 17 MessageBox.Show("接続失敗") 18 End Try 19 20 End Sub 21 22 23 Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click 24 25 'サーバーにデータを送信する 26 '文字列をByte型配列に変換 27 28 Dim enc As System.Text.Encoding = System.Text.Encoding.UTF8 29 Dim sendBytes As Byte() = enc.GetBytes(TextBox1.Text & vbCrLf) 30 'データを送信する 31 ns.Write(sendBytes, 0, sendBytes.Length) 32 33 'サーバーから送られたデータを受信する 34 Dim ms As New System.IO.MemoryStream() 35 Dim resBytes As Byte() = New Byte(255) {} 36 Dim resSize As Integer = 0 37 Do 38 'データの一部を受信する 39 resSize = ns.Read(resBytes, 0, resBytes.Length) 40 'Readが0を返した時はサーバーが切断したと判断 41 If resSize = 0 Then 42 Console.WriteLine("サーバーが切断しました。") 43 Exit Do 44 End If 45 '受信したデータを蓄積する 46 ms.Write(resBytes, 0, resSize) 47 'まだ読み取れるデータがあるか、データの最後が\nでない時は、 48 ' 受信を続ける 49 Loop While ns.DataAvailable OrElse _ 50 resBytes(resSize - 1) <> AscW(ControlChars.Lf) 51 '受信したデータを文字列に変換 52 Dim resMsg As String = enc.GetString(ms.GetBuffer(), 0, CInt(ms.Length)) 53 ms.Close() 54 '末尾の\nを削除 55 resMsg = resMsg.TrimEnd(ControlChars.Lf) 56 57 TextBox2.Text = resMsg 58 59 '閉じる 60 'ns.Close() 61 62 End Sub 63 64 Private Sub Form1_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing 65 66 End Sub 67 68 69 Private Sub Form1_MaximumSizeChanged(sender As Object, e As System.EventArgs) Handles Me.MaximumSizeChanged 70 71 End Sub 72End Class 73

補足情報(FW/ツールのバージョンなど)

![Labview側(受信側)ブロックダイアグラム(Labview(受信側)のブロックダイアグラム.png)

プログラミング初心者のため、読みづらいコード、意味不明なところが多々ございますが、ご教授のほうよろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

https://qiita.com/ringo156/items/6c58ed5fae9e56dafefb

カメラ二台を利用する場合、三角測量、結局幾何学計算になりますが、それが必要です。
また、ある物体が各カメラでどの位置座標にあるのかを特定するために、
画像認識をする必要があります。

これらをlabviewでどのように実現するのかはわかりません。

投稿2018/11/08 09:20

t_obara

総合スコア5488

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

leliel1193

2018/11/12 02:51

回答ありがとうございます。そのあたりの知識は多少勉強しております。 Labviewで実現できるかわからないということは、ほかの言語なら分かるということでしょうか。
t_obara

2018/11/12 03:24

すでに調べているとのことであれば、一番の課題はなんでしょうか?
akirafudo6

2018/11/12 09:04

映像だけで、なんて距離がわかるのでしょうか?距離を測るのなら、物体になにか物質を当てて、それが帰ってきた時間を計るものだと思うのですが・・そういった機能がカメラにないと距離を測ることはできないと思いますが?
t_obara

2018/11/13 01:14

仰っているのはKinectなど赤外線センサーを搭載したカメラのことかと思いますが、そのような機材を利用すればもちろん手軽に精度よく距離を測れますね。あるいは、レーザーを利用した高精度な専用デバイスもあります。しかし精度は劣るものの、同じものを撮影した2枚の画像から距離を測定することは可能です。
akirafudo6

2018/11/13 14:30

Labview自体の仕様については、それを利用しているまたは、メーカーに問合せるしかないと思います。ここで、聞いても答えられる人はいないと思います。ただ、どのうような情報がap側で取得できて、それを自力で計算するのであれば、その式を加減乗算の形で表現できればどの言語でも対応できると思います。どの言語も、加減乗算は用意されてます。もし、関数のようなものが用意されているとしたら、Labviewのメーカーからそのライブラリーが用意されているかも知れません。その場合には対応言語 とかあるかもしれないのでその辺も含めて、メーカーへご質問されては如何でしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問