C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 | 1 >>
■43780  Re[5]: VB.NET 画面表示しているコントロールが更新されません
□投稿者/ おじゃ -(2009/11/18(Wed) 15:43:01)
    No43778 (はつね さん) に返信
    > ■No43774 (おじゃ さん) に返信

    はつねさん、ご回答ありがとうございます。

    上記理由で、プログラム中に直にコントロールIDを書くのが出来なくなっております。
    すみません、何かアドバイスがござましたらよろしくお願い致します。

    ※Timer処理は3秒に1回ぐらいを予定しています。
記事No.43770 のレス /過去ログ75より / 関連記事表示
削除チェック/

■53683  Re[6]: コンボボックスにコレクションの中身を表示させたい
□投稿者/ Hongliang -(2010/09/24(Fri) 03:13:37)
    XamlWriter で出力してみて確認するとか。
    というか、取り敢えず XAML で ItemTemplate 書いてみたらどうでしょう。
記事No.53606 のレス /過去ログ90より / 関連記事表示
削除チェック/

■85265  カメラ台数を増やす
□投稿者/ しろ -(2017/09/28(Thu) 12:28:19)

    分類:[.NET 全般] 

    前にもお世話に利ましたがもう少し改良を
    くえたいのでどうかお願いします。
    http://note.websmil.com/vb/accord/vb-net-accord-usb%e3%82%ab%e3%83%a1%e3%83%a9%e7%94%bb%e5%83%8f%e8%a1%a8%e7%a4%ba
    のプログラムを参考に作りましたがもう一台カメラの台数を増やして
    同じことをやらせようと持っているのですがもう一代目のビデオデバイスの
    設定のところがうまくいきません。コピペしておんなじ事をやらせようとしても
    うまくいかないのはなぜでしょうか?

    'ビデオデバイス一覧を表示する
    _videoDevices = New FilterInfoCollection(FilterCategory.VideoInputDevice)

    ComboBox1.Items.Clear()
    If _videoDevices.Count <> 0 Then
    For Each device In _videoDevices
    ComboBox1.Items.Add(device.Name)
    Next
    ComboBox1.SelectedIndex = 0
    End If
    End Sub
    _videoDevices = New FilterInfoCollection(FilterCategory.VideoInputDevice)

    ComboBox2.Items.Clear()
    If _videoDevices.Count <> 0 Then
    For Each device In _videoDevices
    ComboBox2.Items.Add(device.Name)
    Next
    ComboBox1.SelectedIndex = 1
    End If
    End Sub
親記事 /過去ログ146より / 関連記事表示
削除チェック/

■85269  Re[1]: カメラ台数を増やす
□投稿者/ みい -(2017/09/28(Thu) 15:32:49)
    No85265 (しろ さん) に返信
    > ComboBox2.Items.Clear()
    > If _videoDevices.Count <> 0 Then
    > For Each device In _videoDevices
    > ComboBox2.Items.Add(device.Name)
    > Next
    > ComboBox1.SelectedIndex = 1
    > End If
    ここの「ComboBox『1』.SelectedIndex = 1」は転記ミスでしょうか。
記事No.85265 のレス /過去ログ146より / 関連記事表示
削除チェック/

■85270  Re[1]: カメラ台数を増やす
□投稿者/ みい -(2017/09/28(Thu) 20:08:21)
    No85265 (しろ さん) に返信
    > http://note.websmil.com/vb/accord/vb-net-accord-usb%e3%82%ab%e3%83%a1%e3%83%a9%e7%94%bb%e5%83%8f%e8%a1%a8%e7%a4%ba
    > のプログラムを参考に作りましたがもう一台カメラの台数を増やして
    > 同じことをやらせようと持っているのですがもう一代目のビデオデバイスの
    > 設定のところがうまくいきません。コピペしておんなじ事をやらせようとしても
    > うまくいかないのはなぜでしょうか?
    設定ではなく一覧表示のところのコードを載せられているのでどううまくいかないのか分かりませんが、
    (HPと同じように書いているとして)_videoSource を2台で使いまわしているということはありませんか?

    実際どううまくいかないか書かれた方が回答もらえやすいと思います。

記事No.85265 のレス /過去ログ146より / 関連記事表示
削除チェック/

■85271  Re[1]: カメラ台数を増やす
□投稿者/ Jitta -(2017/09/28(Thu) 21:31:55)
    No85265 (しろ さん) に返信
    > のプログラムを参考に作りましたがもう一台カメラの台数を増やして
    > 同じことをやらせようと持っているのですがもう一代目のビデオデバイスの
    > 設定のところがうまくいきません。コピペしておんなじ事をやらせようとしても
    > うまくいかないのはなぜでしょうか?

     前にも同じことを書いたと思いますが、
    「うまくいかない」というのが実際に何が起こっているのか、説明してください。
    あなたが期待する動作は、どのようなものですか。
    それに対して、実際におこっている動作は、どのようなものですか。
    ここに書いてあるコードは、一体何がしたいのでしょうか。
    Sub の始めがないのに End Sub があるのは、一体どうしてですか?
    情報を小出しにするのではなく、必要、不必要を判断して、きちんとまとめてください。
    判断できないなら、全部出してください。
    出せないなら、有償のサポートに依頼してください。
記事No.85265 のレス /過去ログ146より / 関連記事表示
削除チェック/

■85273  Re[2]: カメラ台数を増やす
□投稿者/ しろ -(2017/09/29(Fri) 18:45:53)
    色々試してみた結果ビデオデバイスの一覧を表示は
    できるようになりましたがビデオデバイスを取得画像の
    表示とUSBデバイスに接続でうまくいきません。
記事No.85265 のレス /過去ログ146より / 関連記事表示
削除チェック/

■85275  Re[3]: カメラ台数を増やす
□投稿者/ Jitta -(2017/09/30(Sat) 09:46:14)
    No85273 (しろ さん) に返信
    > 色々試してみた結果ビデオデバイスの一覧を表示は
    > できるようになりましたがビデオデバイスを取得画像の
    > 表示とUSBデバイスに接続でうまくいきません。

    いろいろ試してみましたか。そうするとできます。


    > もう一代目のビデオデバイスの設定のところがうまくいきません。

    こう書いてあったのですが、

    > ビデオデバイスの一覧を表示はできるようになりました

    ということは、書いてあること(デバイスを設定する)と、実際に行いたいこと(一覧表示する)とは、違っていたと言うことですね。



    あなたがいるところに、私たちはいません。あなたではないので、あなたが言葉にしていない、あなたが考えていることもわかりません。

    ですから、あなたが何を見て、何を試して、どのような結果を得て、どのようなことを考えたのか、わかりません。

    問題というのは、期待することと現状が異なるから問題と認識します。

    あなたが期待することなんですか。それに対して、現状はどうなっていますか。

    その差異がわからなければ、アドバイスも何もしようがありません。

    書いてあることと、実際に行いたいことが異なっているなら、なおさら無理です。

    投稿前に読み直して、特に「てにをは」の使い方が間違っていないか、確認してください。 http://www.raitonoveru.jp/howto2/bunnsyou/03.html


    → 色々試してみた結果、ビデオデバイスの一覧を表示することは
    →できるようになりました。しかし、ビデオデバイスから取得した画像の
    →表示と、USBデバイスへの接続がうまくいきません。

    USB カメラですよね?「USB デバイスへの接続」ができていないなら、画像の表示ができるはずないですよね?
    でも、単体の場合はできているんですよね?ということは、選択する部分に誤りがある、ということになりますよね。
    ドロップダウンリストにデバイス名を表示させて、デバイスIDを取得すれば良いのですが、、、
    いや、何をしようとしていて、実際にどのようにして、どのような結果が得られたのかわからないので、これ以上はやめておこう。
記事No.85265 のレス /過去ログ146より / 関連記事表示
削除チェック/

■85276  Re[4]: カメラ台数を増やす
□投稿者/ しろ -(2017/09/30(Sat) 12:37:54)
    説明が間違ていてすみません
    開始とビデオデバイス取得画像表示のところが
    カメラを増やした時の設定方法がわかりません。
    ビデオデバイス一覧を表示する部分は多分これで
    いいともうのですが間違っているでしょうか?

    'ビデオデバイス一覧を表示する
    _videoDevices = New FilterInfoCollection(FilterCategory.VideoInputDevice)

    ComboBox1.Items.Clear()
    If _videoDevices.Count <> 0 Then
    For Each device In _videoDevices
    ComboBox1.Items.Add(device.Name)
    Next
    ComboBox1.SelectedIndex = 0
    End If
    End Sub

    Dim _videoSource As VideoCaptureDevice = Nothing

    'ビデオデバイス一覧を表示する
    _videoDevices = New FilterInfoCollection(FilterCategory.VideoInputDevice)

    ComboBox2.Items.Clear()
    If _videoDevices.Count <> 0 Then
    For Each device In _videoDevices
    ComboBox2.Items.Add(device.Name)
    Next
    ComboBox2.SelectedIndex = 0
    End If
    End Sub

    Dim _videoSource As VideoCaptureDevice = Nothing
    '[開始]
    Private Sub StartButton_Click(sender As Object, e As EventArgs) Handles StartButton.Click
    If ComboBox1.Items.Count = 0 Then
    Return
    End If

    Dim MonikerString = _videoDevices(ComboBox1.SelectedIndex).MonikerString '最初のビデオデバイスを使用

    _videoSource = New VideoCaptureDevice(MonikerString)
    AddHandler _videoSource.NewFrame, AddressOf Me.Video_NewFrame
    _videoSource.Start()
    End Sub
    'ビデオデバイス取得画像表示
    Private Sub Video_NewFrame(sender As Object, eventArgs As NewFrameEventArgs)
    Dim img = DirectCast(eventArgs.Frame.Clone(), Bitmap)
    PictureBox1.Image = img
    End Sub


記事No.85265 のレス /過去ログ146より / 関連記事表示
削除チェック/

■85277  Re[5]: カメラ台数を増やす
□投稿者/ みい -(2017/09/30(Sat) 15:04:20)
    No85276 (しろ さん) に返信
    Jittaさんが書かれているように「あなたが期待することなんですか。」
    > 開始とビデオデバイス取得画像表示のところが
    > カメラを増やした時の設定方法がわかりません。
    1つの開始ボタンで同時に開始したいのか、
    それぞれの開始ボタンでそれぞれ開始したいのか…
    文章、ソースから読み取れません。
記事No.85265 のレス /過去ログ146より / 関連記事表示
削除チェック/

■85278  Re[6]: カメラ台数を増やす
□投稿者/ しろ -(2017/09/30(Sat) 19:02:20)
    No85277 (みい さん) に返信
    > ■No85276 (しろ さん) に返信
    > Jittaさんが書かれているように「あなたが期待することなんですか。」
    >>開始とビデオデバイス取得画像表示のところが
    >>カメラを増やした時の設定方法がわかりません。
    > 1つの開始ボタンで同時に開始したいのか、
    > それぞれの開始ボタンでそれぞれ開始したいのか…
    > 文章、ソースから読み取れません。


    開始ボタンを押したらカメラに接続し表示させたいのですが
記事No.85265 のレス /過去ログ146より / 関連記事表示
削除チェック/

■85281  Re[7]: カメラ台数を増やす
□投稿者/ あんぴん -(2017/10/02(Mon) 09:24:19)
    >>■No85276 (しろ さん) に返信

    お言葉ですが、自分の意図を上手く伝えられない、相手の意図を上手く読めないというのはプログラマとして致命的だと思います。
    何故お二方の忠告を徹底的に無視されているのでしょうか?上手くいかなくて焦る気持ちは分かりますが、あなたがその姿勢では答えられる回答も出すことが出来ません。
    ボタンを押して接続したいというのは分かります。ボタン一つで2台接続したいのか、カメラごとにそれぞれボタンを用意したいのか、これすらこちらに伝えるのは困難ですか?
    回答をされる方々は神様ではありません。パソコンの画面の内容もエラー内容もあなたの文章からしか読み取ることが出来ません。
    本当に回答が欲しいのであれば、もう一度トピック内の書き込みを読み直してあなたの状況が正しく伝わるように説明をお願いします。
記事No.85265 のレス /過去ログ146より / 関連記事表示
削除チェック/

■85325  Re[8]: カメラ台数を増やす
□投稿者/ Jitta -(2017/10/07(Sat) 20:25:47)
    元のコード
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    Dim _videoDevices As FilterInfoCollection
    
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        'ビデオデバイス一覧を表示する
        _videoDevices = New FilterInfoCollection(FilterCategory.VideoInputDevice)
    
        ComboBox1.Items.Clear()
        If _videoDevices.Count <> 0 Then
            For Each device In _videoDevices
                ComboBox1.Items.Add(device.Name)
            Next
            ComboBox1.SelectedIndex = 0
        End If
    End Sub
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    
    ここに書かれたコード
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    ☆ここにあるはずのメソッド識別子がない
        'ビデオデバイス一覧を表示する
        _videoDevices = New FilterInfoCollection(FilterCategory.VideoInputDevice)
    
        ComboBox1.Items.Clear()
        If _videoDevices.Count <> 0 Then
            For Each device In _videoDevices
                ComboBox1.Items.Add(device.Name)
            Next
            ComboBox1.SelectedIndex = 0
        End If
    End Sub
    
    ☆ここにあるはずのメソッド識別子がない
        _videoDevices = New FilterInfoCollection(FilterCategory.VideoInputDevice)
    
        ComboBox2.Items.Clear()
        If _videoDevices.Count <> 0 Then
            For Each device In _videoDevices
                ComboBox2.Items.Add(device.Name)
            Next
            ComboBox1.SelectedIndex = 1
        End If
    End Sub
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    
    最初に指摘していますが、メソッド識別子がないので、これは「コンパイルできないコード」です。
    元のページのコードで、接続されているデバイスをコンボボックスのリストに列挙し、
    ボタンを押したときに選択されているデバイスの映像を取得する、ということができています。
    なので、
    元のコードとは違う何を望み、
    どう考えてコードを修正し、
    その結果どのようになったのかがわかりません。
    
    なんとなく、「複数のカメラの映像を同時に表示したい」かもしれない、
    という気がしてきたけど、深読みしてもしょうがないのでやめとく。
記事No.85265 のレス /過去ログ146より / 関連記事表示
削除チェック/

■85336  Re[9]: カメラ台数を増やす
□投稿者/ しろ -(2017/10/11(Wed) 07:02:02)
    No85325 (Jitta さん) に返信
    へんとうありがとぅございます。
    Jittaさんありがとぅございます
    カメラをふく数台増やして画面も増やしたいので
    説明不足で済みません。
    今現在カメラを2台あり出力も2増やしたいので
    出力の画面の二代めの設定がわからないんです。
記事No.85265 のレス /過去ログ146より / 関連記事表示
削除チェック/

■85342  Re[10]: カメラ台数を増やす
□投稿者/ Jitta -(2017/10/11(Wed) 21:54:45)
    No85336 (しろ さん) に返信
    > ■No85325 (Jitta さん) に返信
    > へんとうありがとぅございます。
    > Jittaさんありがとぅございます
    > カメラをふく数台増やして画面も増やしたいので
    > 説明不足で済みません。
    > 今現在カメラを2台あり出力も2増やしたいので
    > 出力の画面の二代めの設定がわからないんです。

    「ありがとぅございます」って、なんか、馬鹿にされている感じがするんですけど。

    あなたの立場は何ですか。
    1.他人が作ったプログラムをコード化する
    2.プログラムを作る

    1なら、プログラムを作る人に、きちんとプログラムを作るように言ってください。
    2なら、プログラムを作りましょう。
    プログラムとは、するべきことと、それを実行する順番です。
    音楽会のプログラム、運動会のプログラム、終業式・始業式・卒業式の式次、それらとおなじです。
    何を、どのような順番で行えば、目的が達成できるのか、きちんと考えることから始めましょう。
    プログラムを作ることと、プログラムをコード化することを一緒に行おうとするから混乱するのです。

    あなたが参照しているコードを、まずはプログラム、実行することとその順番に直しましょう。
    そうすると、試行錯誤しなくても、何をしなければならないか、見えてきます。
記事No.85265 のレス /過去ログ146より / 関連記事表示
削除チェック/

■85346  Re[11]: カメラ台数を増やす
□投稿者/ しろ -(2017/10/12(Thu) 07:23:25)
    No85342 (Jitta さん) に返信
    > ■No85336 (しろ さん) に返信
    >>■No85325 (Jitta さん) に返信

    >
    > 「ありがとぅございます」って、なんか、馬鹿にされている感じがするんですけど。
    決して馬鹿にしているつもりわないですよ!!
    自分で色々考えているのですがなかなかわからないのでプログラムを
    書いてもらってもいいですか?
記事No.85265 のレス /過去ログ146より / 関連記事表示
削除チェック/

■85347  Re[12]: カメラ台数を増やす
□投稿者/ ぶなっぷ -(2017/10/12(Thu) 14:03:06)
    まぁ、どうしても頭の固い人って言うのは一定数おられます。
    そんなたぐいの話ですね。
    要は見る方向が違うんですね、こればっかりは本人が
    気づかないとどうしようもない。
    
    というわけで例を挙げて解説してみましょう。
    まずは、困っていることを定義します。
    
    [困っていること]
    兄弟2人が、同じ時間に放送されるTV番組を見たくて、
    チャンネルの取り合いで大喧嘩している
    
    [相談内容]
    この内容に対して、喧嘩をやめさせたいと、そのままの
    相談内容なら、いろんなアドバイスができるでしょう。
    ・テレビをもう一台買う
    ・どちらかの番組を録画する
    ・どっちかに交換条件を提示してあきらめてもらう
        : など
    
    しかし、「2つの番組を同時に見られないんだよ」という
    ような相談だったらどうですか?
    今どきなら、2画面同時視聴型テレビとかもありますが、
    その答えじゃ根本解決には至らないよね。
    
    なんとなく伝わりますか?
    質問の仕方がまずいんです。
記事No.85265 のレス /過去ログ146より / 関連記事表示
削除チェック/

■85363  Re[12]: カメラ台数を増やす
□投稿者/ Jitta -(2017/10/14(Sat) 20:40:22)
    No85346 (しろ さん) に返信
    > ■No85342 (Jitta さん) に返信
    >>■No85336 (しろ さん) に返信
    > >>■No85325 (Jitta さん) に返信
    > 。
    >>
    >>「ありがとぅございます」って、なんか、馬鹿にされている感じがするんですけど。
    > 決して馬鹿にしているつもりわないですよ!!
    > 自分で色々考えているのですがなかなかわからないのでプログラムを
    > 書いてもらってもいいですか?

    書いてもらってもいいですかも何も、何がしたいのかわからないので、答えられません。
    と、何度も書いています。

    どのような画面で、
    ユーザーがどのような操作をしたら、
    どのカメラ画像を、
    どこに、
    表示したいのでしょうか。

    「うまくいきません」とは、どのような期待に対して、どのようになるのでしょうか。

    ここに転記されたコードはコンパイルできません。
    ですから、「うまくいきません」より前の状態だと思っています。
    あなたが実行したコードを転記してください。
記事No.85265 のレス /過去ログ146より / 関連記事表示
削除チェック/

■85364  Re[13]: カメラ台数を増やす
□投稿者/ しろ -(2017/10/14(Sat) 21:52:36)
    大体ですがこんな感じです・↓
    Imports AForge.Video
    Imports AForge.Video.DirectShow

    Public Class Form1
    Dim _videoDevices1 As FilterInfoCollection
    Dim _videoDevices As FilterInfoCollection

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    '保存先の指定
    TextBox1.Text = "C:\tic\"
    'スイッチを使用禁止にする
    ' ComboBox1.Enabled = False
    Button2.Enabled = False
    Button3.Enabled = False
    Button4.Enabled = False
    Button5.Enabled = False
    'ビデオデバイス一覧を表示する
    _videoDevices = New FilterInfoCollection(FilterCategory.VideoInputDevice)

    ComboBox1.Items.Clear()
    If _videoDevices.Count <> 0 Then
    For Each device In _videoDevices
    ComboBox1.Items.Add(device.Name)
    Next
    ComboBox1.SelectedIndex = 0

    End If

    _videoDevices1 = New FilterInfoCollection(FilterCategory.VideoInputDevice)

    ComboBox2.Items.Clear()
    If _videoDevices.Count <> 0 Then
    For Each device In _videoDevices
    ComboBox2.Items.Add(device.Name)
    Next
    ComboBox2.SelectedIndex = 0
    End If


    End Sub

    Dim _videoSource As VideoCaptureDevice = Nothing
    Private ReadOnly cameraControl1 As Object
    Private ReadOnly dt As Object
    Private formatteddate As String
    Private intNUM As Integer

    わからんところ↓ビデオデバイスを画像をのComboBox2で
    選択された2代目カメラPictureBox3出力されないところ。

    'ビデオデバイス取得画像表示
    Private Sub Video_NewFrame(sender As Object, eventArgs As NewFrameEventArgs)
    Dim img = DirectCast(eventArgs.Frame.Clone(), Bitmap)
    PictureBox1.Image = img



    'ビデオデバイス取得画像表示
    ' Private Sub Video_NewFrame1(sender As Object, eventArgs As NewFrameEventArgs)
    ' Dim img1 = DirectCast(eventArgs1.Frame.Clone(), Bitmap)
    ' PictureBox3.Image = img1
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    ここでボタンを押すとComboBox1が例えばaのPictureBox1に接続表示
    で、ComboBox1で選択された2代目がPictureBox3に出力されるようにしたいのですが
    なかなかうまくいかないです。↓

    'USBビデオデバイスに接続表示
    If ComboBox1.Items.Count = 0 Then
    Return
    End If

    Dim MonikerString = _videoDevices(ComboBox1.SelectedIndex).MonikerString '最初のビデオデバイスを使用

    _videoSource = New VideoCaptureDevice(MonikerString)
    AddHandler _videoSource.NewFrame, AddressOf Me.Video_NewFrame
    _videoSource.Start()

    'スイッチを使用可能にする
    Button2.Enabled = True
    Button3.Enabled = True
    Button4.Enabled = True
    Button5.Enabled = True


    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    'USBビデオデバイス停止
    If _videoSource Is Nothing Then
    Return
    End If

    If _videoSource.IsRunning Then
    _videoSource.SignalToStop() 'ビデオデバイスの停止
    _videoSource.WaitForStop() '完全に停止するまで待つ
    _videoSource = Nothing
    End If
    End Sub

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    ' 自身のフォームを閉じる
    Me.Close()
    End
    End Sub

    Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click

    ' カウンタ
    Label2.Text = Label2.Text + 1
    '保存先を指定してjpgファぃるに保存する
    Dim ro As String = TextBox1.Text

    Dim dt = DateTime.Now
    formatteddate = dt.ToString("yyyy年MM月dd日hh時mm秒ss分")



    Dim fileName As String = ro + formatteddate + ".jpg"
    Label3.Text = formatteddate

    ' MessageBox.Show(fileName)
    PictureBox1.Image.Save(fileName, System.Drawing.Imaging.ImageFormat.Jpeg)

    '
    ' FileStream を開く
    Dim hStream As New System.IO.FileStream(fileName, System.IO.FileMode.Open)

    ' FileStream から画像を読み込んで表示
    Me.PictureBox2.Image = Image.FromStream(hStream)

    ' FileStream を閉じる (正しくは オブジェクトの破棄を保証する を参照)
    hStream.Close()


    End Sub

    Private Function vrnINPUT() As String
    Throw New NotImplementedException()
    End Function

    Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
    'カウンタ内容を0にリセットする
    Label2.Text = "0"
    End Sub


    End Class
記事No.85265 のレス /過去ログ146より / 関連記事表示
削除チェック/

■85365  Re[14]: カメラ台数を増やす
□投稿者/ Jitta -(2017/10/15(Sun) 09:03:05)
    2017/10/15(Sun) 13:02:21 編集(投稿者)
    2017/10/15(Sun) 13:01:00 編集(投稿者)

    Imports AForge.Video
    Imports AForge.Video.DirectShow

    Public Class Form1
    Dim _videoDevices1 As FilterInfoCollection
    Dim _videoDevices As FilterInfoCollection

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    '保存先の指定
    TextBox1.Text = "C:\tic\"
    'スイッチを使用禁止にする
    ' ComboBox1.Enabled = False
    Button2.Enabled = False
    Button3.Enabled = False
    Button4.Enabled = False
    Button5.Enabled = False
    'ビデオデバイス一覧を表示する
    _videoDevices = New FilterInfoCollection(FilterCategory.VideoInputDevice)

    ComboBox1.Items.Clear()
    If _videoDevices.Count <> 0 Then
    For Each device In _videoDevices
    ComboBox1.Items.Add(device.Name)
    Next
    ComboBox1.SelectedIndex = 0
    End If

    '※ _videoDevices と同じなので不要
    _videoDevices1 = New FilterInfoCollection(FilterCategory.VideoInputDevice)

    ComboBox2.Items.Clear()
    '※ _videoDevices1 を使っていなければおかしい
    '※ こういうところが「何がしたいの?」とわからなくさせる。
    '※ 「0 ではない」ではなく、「2以上なら」では?
    '※ comboBox2 に表示させる条件、モノが不明
    '※ 「カメラが2台以上あるとき」で、「2台以上ある」のは確定なのか。
    '※ ここで初期値としたいのは「ComboBox1 とは違うもの」なのか。
    '※ などの仕様が不明。
    If _videoDevices.Count <> 0 Then
    For Each device In _videoDevices
    ComboBox2.Items.Add(device.Name)
    Next
    '※ こちらは 「ComboBox2.SelectedIndex = 1」 では?
    ComboBox2.SelectedIndex = 0
    End If
    End Sub

    Dim _videoSource As VideoCaptureDevice = Nothing
    Private ReadOnly cameraControl1 As Object
    Private ReadOnly dt As Object
    Private formatteddate As String
    Private intNUM As Integer

    > わからんところ↓ビデオデバイスを画像をのComboBox2で
    > 選択された2代目カメラPictureBox3出力されないところ。
    '※ 「選択された2台目のカメラがPictureBox3に出力されない」?

    'ビデオデバイス取得画像表示
    Private Sub Video_NewFrame(sender As Object, eventArgs As NewFrameEventArgs)
    Dim img = DirectCast(eventArgs.Frame.Clone(), Bitmap)
    PictureBox1.Image = img

    'ビデオデバイス取得画像表示
    ' Private Sub Video_NewFrame1(sender As Object, eventArgs As NewFrameEventArgs)
    ' Dim img1 = DirectCast(eventArgs1.Frame.Clone(), Bitmap)
    ' PictureBox3.Image = img1
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    > ここでボタンを押すとComboBox1が例えばaのPictureBox1に接続表示
    > で、ComboBox1で選択された2代目がPictureBox3に出力されるようにしたいのですが
    > なかなかうまくいかないです。↓

    'USBビデオデバイスに接続表示
    '※ なぜ ComboBox2 の状態は調べないのですか?
    '※ ComboBox は、「選択していない」状態が選べます。
    '※ また、「Combo」は、DropdownList と TextBox のコンボ(組み合わせ)を意味します。
    '※ カメラを示さない文字列が入力されていたら、どうしますか。
    If ComboBox1.Items.Count = 0 Then
    Return
    End If

    '※ ここから「スイッチを使用可能にする」までの行は、何をしていますか。
    '※ その意味を知ってください。
    '※ プログラムは、「計画、予定、内容」を意味します。
    '※ 「プログラムを作る」は、コードを書くことではなく、コンピュータの動作予定を作ることです。
    '※ 今回のメインはここです。ここが何をしているのか、理解してください。
    '※ 今のプログラムは、
    '※ 「ComboBox1 に選択されているカメラと接続する」
    '※ 「接続したカメラからフレームの入力があれば Me.Video_NewFrame を実行するようにする」
    '※ 「接続したカメラからの入力を開始する」
    '※ です。これが、どのようになればいいのか、コードの前にプログラムを作ってください。
    '※ プログラム=何を、どのような順で実行するか、ができなければ、コードは書けません。
    Dim MonikerString = _videoDevices(ComboBox1.SelectedIndex).MonikerString '最初のビデオデバイスを使用

    _videoSource = New VideoCaptureDevice(MonikerString)
    AddHandler _videoSource.NewFrame, AddressOf Me.Video_NewFrame
    _videoSource.Start()

    'スイッチを使用可能にする
    Button2.Enabled = True
    Button3.Enabled = True
    Button4.Enabled = True
    Button5.Enabled = True
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    'USBビデオデバイス停止
    If _videoSource Is Nothing Then
    Return
    End If

    If _videoSource.IsRunning Then
    _videoSource.SignalToStop() 'ビデオデバイスの停止
    _videoSource.WaitForStop() '完全に停止するまで待つ
    _videoSource = Nothing
    End If
    End Sub

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    ' 自身のフォームを閉じる
    Me.Close()
    End
    End Sub

    Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
    ' カウンタ
    Label2.Text = Label2.Text + 1
    '保存先を指定してjpgファぃるに保存する
    Dim ro As String = TextBox1.Text

    Dim dt = DateTime.Now
    formatteddate = dt.ToString("yyyy年MM月dd日hh時mm秒ss分")

    Dim fileName As String = ro + formatteddate + ".jpg"
    Label3.Text = formatteddate

    ' MessageBox.Show(fileName)
    '※ PictureBox1 と PictureBox2 の方法が違うのはなぜ?
    PictureBox1.Image.Save(fileName, System.Drawing.Imaging.ImageFormat.Jpeg)

    '
    ' FileStream を開く
    '※ Stream は using 文を使ってください。
    Dim hStream As New System.IO.FileStream(fileName, System.IO.FileMode.Open)

    ' FileStream から画像を読み込んで表示
    Me.PictureBox2.Image = Image.FromStream(hStream)

    ' FileStream を閉じる (正しくは オブジェクトの破棄を保証する を参照)
    hStream.Close()
    End Sub

    Private Function vrnINPUT() As String
    Throw New NotImplementedException()
    End Function

    Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
    'カウンタ内容を0にリセットする
    Label2.Text = "0"
    End Sub
    End Class


    > わからんところ↓ビデオデバイスを画像をのComboBox2で
    > 選択された2代目カメラPictureBox3出力されないところ。

    わからないところ↓ComboBox2 で選択された2台目のカメラ
    の画像が、PictureBox3 に出力されないところ。


    > ここでボタンを押すとComboBox1が例えばaのPictureBox1に接続表示
    > で、ComboBox1で選択された2代目がPictureBox3に出力されるようにしたいのですが
    > なかなかうまくいかないです。↓

    ここでボタンを押すと、ComboBox1 に選択されている a のカメラに接続され、
    PictureBox1 に表示させたい。また、ComboBox2 で選択されている2台目を、
    PictureBox3 に表示させたい。


    仕様:
    PCに、カメラが2台接続されている。
    アプリの画面には、ビデオ映像を表示する箇所(PictureBox)が2つある。
    それぞれの PictureBox に表示させるカメラを DropdownList で選ぶ。
    ボタンを押すと、選択されているそれぞれのカメラに接続し、画像を表示する。

    今できていること:
    カメラが1台の時、1つのPictureBox に表示させることはできている。

    できていないこと:
    2つのカメラに同時に接続する。
     ComboBox1 で選択したカメラを PictureBox1 に表示することしかできていない。
     ComboBox2 で選択したカメラを PictureBox3 に表示させたい。
記事No.85265 のレス /過去ログ146より / 関連記事表示
削除チェック/

次の20件>

<< 0 | 1 >>

パスワード/

- Child Tree -