Visual Basic 中学校 掲示板 投稿内容
タグのない投稿を抽出 統計 RSS

Visual Basic 中学校 > 投稿一覧 >

画像保存

タグの編集...

投稿者 まさ   (社会人)   投稿日時 2022/4/14 14:21:57
こんにちは
人のまねをしてwebカメラから画像がpc上に表示することに
成功しました
あとボタンを押せば指定した場所に
時間と名前(textbox1.text)を付けて保存したいのですが
どうすればいいでしょうか

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 OpenCvSharp;
using OpenCvSharp.Extensions;

namespace OpenCv_3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            Task.Run(() =>
            {
                using (VideoCapture v = new VideoCapture(0))
                using (Mat img = new Mat())
                {
                    while (true)
                    {
                        v.Read(img);
                        pictureBox1.Image = BitmapConverter.ToBitmap(img);

                    }
                }
            });
        }
    }
}
宜しくお願い致します

投稿者 魔界の仮面弁士   (社会人)   投稿日時 2022/4/14 17:04:13
OpenCvSharp をお使いなのですね。
自分は AForge を使うことが多いです。


> pictureBox1.Image = BitmapConverter.ToBitmap(img);
新しい Image をセットする前に、
以前にセットされていた Image を処分しなくて大丈夫ですか?

 var old = pictureBox1.Image;
 pictureBox1.Image = BitmapConverter.ToBitmap(img);
 old?.Dispose();  // ← 「if (old != null) { old.Dispose(); }」の意

この方法をとる場合は、 Image に渡したインスタンスを
他の場所で共有利用しないようにしましょう。破棄しようとしたオブジェクトが
他の場所でまだ使われているか、もう使われていないかを管理するのは大変ですからね。
(寿命管理の観点からは、共有せずに、Clone メソッドで複製して使うことをお奨めします)


> あとボタンを押せば指定した場所に
> 時間と名前(textbox1.text)を付けて保存したいのですが
動画ですか? 静止画ですか?

静止画なら、pictureBox1.Image に対して Bitmap インスタンスを
逐次セットしているわけですから、
 var bmp = 対象のBitmapインスタンス;
 bmp.Save(保存先); // 別の形式で保存したい場合は、引数でコーデックも指定する
で良いのでは無いでしょうか。 

Mat 側を保持している場合は、
 Cv2.ImWrite(保存先, mat);
でも良いと思います。


動画の場合はこのあたりかな。
https://www.eqchem.s.u-tokyo.ac.jp/laboratories/fumi/?p=687
http://sssignal.web.fc2.com/column/column21.html
https://gist.github.com/0V/f1ab148dd3d6328457e8