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

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

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

No.99496 の関連記事表示

<< 0 >>
■99496  USB カメラ
□投稿者/ くま -(2022/04/18(Mon) 12:55:34)

    分類:[C#] 

    お願いします
    USBカメラをpictureboxに画像を表示させたのですが
    文字が逆に映るのはなぜでしょうか
    (左右が逆に映ります)
    教えて下さい
    宜しくお願い致します
親記事 /過去ログ173より / 関連記事表示
削除チェック/

■99497  Re[1]: USB カメラ
□投稿者/ 魔界の仮面弁士 -(2022/04/18(Mon) 12:58:17)
    No99496 (くま さん) に返信
    > USBカメラをpictureboxに画像を表示させたのですが
    そもそも、どうやって表示させていますか? (^_^;)
    また、前面カメラと対面カメラのどちらを使っていますか?

    対面カメラの場合、ドライバー側の既定値で、
    鏡写しにするための反転処理が組み込まれているかもしれません。
記事No.99496 のレス /過去ログ173より / 関連記事表示
削除チェック/

■99498  Re[2]: USB カメラ
□投稿者/ くま -(2022/04/18(Mon) 14:56:26)
    名前がご一緒ですね(笑)
記事No.99496 のレス /過去ログ173より / 関連記事表示
削除チェック/

■99500  Re[3]: USB カメラ
□投稿者/ くま -(2022/04/19(Tue) 18:55:55)
    くまさん、すみません。改名させて頂きます。熊五郎で

    魔界の仮面弁士さんありがとうございます
    ネット上にのっていたソースをうつして使いました

    カメラは4年ほど前に買ったバッファローのWEBカメラで
    ドライバーはパソコンに入れておらず、USBに刺しただけで
    映ったので、いけるかなと思ったらよく見たら反対でした
記事No.99496 のレス /過去ログ173より / 関連記事表示
削除チェック/

■99501  Re[4]: USB カメラ
□投稿者/ 魔界の仮面弁士 -(2022/04/19(Tue) 20:17:10)
    No99500 (くま さん) に返信
    > くまさん、すみません。改名させて頂きます。熊五郎で
    しかし改名はされなかった模様。

    ところで、新規投稿時の注意書きに、
    >> 半角カナは使用しないでください。文字化けの原因になります。
    という表記があったと思います。次回以降、ご留意ください。
    (今回は問題無かったようですが)


    > 魔界の仮面弁士さんありがとうございます
    > ネット上にのっていたソースをうつして使いました
    写した結果、どういうソースになったのかを示して貰わないと、
    何処に問題があるのかを指摘しようが無いんですよ…? (^_^;

    AForge.Video.DirectShow を使うもの、OpenCVSharp3 を使うもの、OpenCVSharp4 を使うもの、
    DirectShowLib を使うもの、SharpDX を使うもの、Windows.Media.Capture を使うものなどなど。
記事No.99496 のレス /過去ログ173より / 関連記事表示
削除チェック/

■99503  Re[5]: USB カメラ
□投稿者/ 熊五郎 -(2022/04/19(Tue) 23:14:28)
    申し訳ありません。気を付けます

    AForge.Video.DirectShowを使っています
    ソースです
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using DarrenLee.Media;
    using System.IO;
    using System.Drawing.Imaging;


    namespace MainWebCamProject2
    {
    public partial class TakePicture : Form
    {
    Camera myCamera = new Camera();

    public TakePicture()
    {
    InitializeComponent();

    GetInfo();
    myCamera.OnFrameArrived += myCamera_OnFrameArrived;
    DateTime dt = DateTime.Now;
    textBox1.Text = dt.ToString();
    }


    private void myCamera_OnFrameArrived(object source, FrameArrivedEventArgs e)
    {
    Image img = e.GetFrame();
    pictureBox1.Image = img;
    }
    private void GetInfo()
    {
    var cameraDevices = myCamera.GetCameraSources();
    var cameraResolution = myCamera.GetSupportedResolutions();

    foreach (var d in cameraDevices)
    {
    comboBox1.Items.Add(d);
    }
    foreach (var r in cameraResolution)
    {
    comboBox2.Items.Add(r);
    }

    comboBox1.SelectedIndex = 0;
    comboBox2.SelectedIndex = 0;
    }

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
    myCamera.ChangeCamera(comboBox1.SelectedIndex);
    }

    private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
    {
    myCamera.Start(comboBox2.SelectedIndex);
    }

    private void TakePicture_FormClosing(object sender, FormClosingEventArgs e)
    {
    myCamera.Stop();
    }

    private void btnSave_Click(object sender, EventArgs e)
    {

    try
    {
    if (Directory.Exists(@"C:\DB\images"))
    {
    //Directory.CreateDirectory(@"C:\DB\images");
    //MessageBox.Show("Image Folder Created...");
    //}
    //else
    //{
    string path = @"C:\DB\images";
    DateTime dt = DateTime.Now;
    pictureBox1.Image.Save(path + @"\" + dt.ToString("yyyyMMdd") + "_"+dt.ToString("HHmmss") + "-" + textBox1.Text + ".jpg",ImageFormat.Jpeg);
    }
    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message);
    }

    }

    private void TakePicture_Load(object sender, EventArgs e)
    {

    }
    }
    }
    宜しくお願い致します
記事No.99496 のレス /過去ログ173より / 関連記事表示
削除チェック/

■99505  Re[6]: USB カメラ
□投稿者/ 魔界の仮面弁士 -(2022/04/20(Wed) 02:07:38)
    No99503 (熊五郎 さん) に返信
    > ソースです
    ソースを貼る場合は、投稿モードを「通常モード」から「図表モード」に変更しておきましょう。
    通常モードのまま投稿すると、文頭の半角空白やタブが潰されてしまうため、ソースが読みくくなってしまいます。

    送信ボタン横の [プレビュー] を使って事前確認するのも良いかと思います。


    > AForge.Video.DirectShowを使っています
    えぇと…提示コードの Camera クラスというのは、おそらく DarrenLee.Media 名前空間のものですよね。

    このコードを提示するのであれば、AForge.Video.DirectShow などとは言わずに、
    そのまま DarrenLee.Media.Camera を利用しているのだと説明して頂いた方が分かりやすいです。


    とは言え、私も DarrenLee.Media 名前空間というものは初耳でして…。

    しかも「ネット上にのっていたソース」の出典さえ明かされていないので、
    仕方が無いのでこちらで探してみたところ、Darren Lee Yong Xiang という方の
    YouTube チャンネルが見つかりました。恐らくはコレですね。
    https://bit.ly/3Er76GF

    ※元の URL で掲載すると、迷惑者投稿判定されてしまったので、短縮 URL で貼っています。

    本来は、こうした元情報は回答者側に探せるのではなく、
    質問者が自ら提示頂くべきものです。次回以降、御留意ください。


    とりあえず調べてみたところ、上記の DarrenLee.Media.Camera クラスというものは、
    内部で AForge.Video.DirectShow.VideoCaptureDevice クラスを利用しており、
    VideoCaptureDevice の NewFrame イベントを下記のように処理しているようです。

    私の方で、説明用のコメントを追加してあります。

    private void FinalFrame_NewFrame(object sender, NewFrameEventArgs eventArgs)
    {
     // NewFrame イベント引数の eventArgs.Frame は、イベント終了後に
     // 自動的に破棄(Dispose)されるため、イベント利用側で複製(Clone)しておく必要がある
     var image = (Bitmap)eventArgs.Frame.Clone();

     // ★これが問題の箇所★ 取得した画像を、わざわざ左右反転させている!
     image.RotateFlip(RotateFlipType.RotateNoneFlipX);

     this.img = image;

     // OnFrameArrived イベントを発生させる
     if (this.OnFrameArrived != null)
     {
      this.OnFrameArrived(this, new FrameArrivedEventArgs(this.img));
     }
    }


    >>> USBカメラをpictureboxに画像を表示させたのですが
    >>> 文字が逆に映るのはなぜでしょうか

    処理の意図については、作者に御確認いただかないと分かりませんが、
    あえて RotateNoneFlipX していることから、この場合のカメラは
    いわゆる対面カメラ(インカメラ)での撮影を想定したものと推察されます。


    鏡写し(左右反転)になってしまうのが都合が悪いというのであれば、

     (案1) 自前で、もう一度左右反転させて使う
     (案2) DarrenLee.Media を用いず、AForge.Video.DirectShow 等を直接使う

    などの処理を、御自身で追加してみてください。
記事No.99496 のレス /過去ログ173より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -