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

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

C# と VB.NET の入門サイト

Re[6]: USB カメラ


(過去ログ 173 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■99496 / inTopicNo.1)  USB カメラ
  
□投稿者/ くま (191回)-(2022/04/18(Mon) 12:55:34)

分類:[C#] 

お願いします
USBカメラをpictureboxに画像を表示させたのですが
文字が逆に映るのはなぜでしょうか
(左右が逆に映ります)
教えて下さい
宜しくお願い致します

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

対面カメラの場合、ドライバー側の既定値で、
鏡写しにするための反転処理が組み込まれているかもしれません。
引用返信 編集キー/
■99498 / inTopicNo.3)  Re[2]: USB カメラ
□投稿者/ くま (192回)-(2022/04/18(Mon) 14:56:26)
名前がご一緒ですね(笑)
引用返信 編集キー/
■99500 / inTopicNo.4)  Re[3]: USB カメラ
□投稿者/ くま (193回)-(2022/04/19(Tue) 18:55:55)
くまさん、すみません。改名させて頂きます。熊五郎で

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

カメラは4年ほど前に買ったバッファローのWEBカメラで
ドライバーはパソコンに入れておらず、USBに刺しただけで
映ったので、いけるかなと思ったらよく見たら反対でした
引用返信 編集キー/
■99501 / inTopicNo.5)  Re[4]: USB カメラ
□投稿者/ 魔界の仮面弁士 (3327回)-(2022/04/19(Tue) 20:17:10)
No99500 (くま さん) に返信
> くまさん、すみません。改名させて頂きます。熊五郎で
しかし改名はされなかった模様。

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


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

AForge.Video.DirectShow を使うもの、OpenCVSharp3 を使うもの、OpenCVSharp4 を使うもの、
DirectShowLib を使うもの、SharpDX を使うもの、Windows.Media.Capture を使うものなどなど。
引用返信 編集キー/
■99503 / inTopicNo.6)  Re[5]: USB カメラ
□投稿者/ 熊五郎 (1回)-(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)
{

}
}
}
宜しくお願い致します
引用返信 編集キー/
■99505 / inTopicNo.7)  Re[6]: USB カメラ
□投稿者/ 魔界の仮面弁士 (3329回)-(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 等を直接使う

などの処理を、御自身で追加してみてください。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -