前提・実現したいこと
Visual Studio Express 2017 for Windows DesktopでOpenCvSharp4を使用し、WEBカメラで画像を表示するソフトを作成しています。
この時、ビルドの設定により、OpenCVの動作スピードが変わってきます。
以下が添付のソースを実行したときの結果です。
①Release,X64
VideoCapture Start !
VideoCapture: time=8446 [msec]
capture.IsOpened: time=0 [msec]
NamedWindow: time=0 [msec]
Mat: time=0 [msec]
②Debug,X64
VideoCapture Start !
VideoCapture: time=215 [msec]
capture.IsOpened: time=0 [msec]
NamedWindow: time=0 [msec]
Mat: time=0 [msec]
x64のreleaseモードでビルドすると、Cv2.VideoCapture()がすごく遅くなります。
debugが215msecに対しReleaseが、8.4秒となります。
x86の時は、Release,Debugのモードに関係なく、x64のDebugに近い感じです。
ただ、実際のカメラ動画表示は、x64のReleaseが一番スムーズに行え、他はカクつきます。
x64のreleaseモードでOpenCVのCv2.VideoCapture()を早くすることが出来ないでしょうか?
よろしくお願いします。
該当のソースコード
C#
1using System; 2using System.Collections.Generic; 3using System.ComponentModel; 4using System.Data; 5using System.Drawing; 6using System.Linq; 7using System.Text; 8using System.Threading.Tasks; 9using System.Windows.Forms; 10using OpenCvSharp; 11 12namespace cam_test 13{ 14 public partial class Form1 : Form 15 { 16 public Form1() 17 { 18 InitializeComponent(); 19 } 20 21 private void camCapture() 22 { 23 // public VideoCapture capture; 24 VideoCapture capture; 25 string name = "capture"; 26 27 var sw = new System.Diagnostics.Stopwatch();// Stopwatchクラス生成 28 sw.Start(); 29 Console.WriteLine("VideoCapture Start !"); 30 31 capture = new VideoCapture(0); 32 Console.WriteLine("VideoCapture: time={0} [msec]",sw.ElapsedMilliseconds); 33 sw.Reset(); 34 35 if (!capture.IsOpened()) return; 36 Console.WriteLine("capture.IsOpened: time={0} [msec]",sw.ElapsedMilliseconds); 37 38 sw.Reset(); 39 Cv2.NamedWindow(name, WindowFlags.Normal); // 画面表示 40 Console.WriteLine("NamedWindow: time={0} [msec]",sw.ElapsedMilliseconds); 41 42 sw.Reset(); 43 var img = new Mat(); 44 Console.WriteLine("Mat: time={0} [msec]",sw.ElapsedMilliseconds); 45 46 while (true) // キャプチャーループ 47 { 48 capture.Read(img); 49 if (img.Empty())break; 50 Cv2.ImShow(name, img); 51 if ( Cv2.WaitKey(1) == 27) break; // ESC キーで閉じる 52 } 53 Cv2.DestroyWindow(name); 54 } 55 56 private void btnCapture_Click(object sender, EventArgs e) 57 { 58 camCapture(); 59 } 60 } 61} 62
補足情報(FW/ツールのバージョンなど)
・Visual Studio Express 2017 for Windows Desktop
・OpenCvSharp4.Windows
バージョン:4.5.3.20210817
回答1件
あなたの回答
tips
プレビュー