質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
MFC

MFC (Microsoft Fouondation Class)とは、MicrosoftがVC++用に開発したWindows用アプリケーションのフレームワークです。

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

0回答

764閲覧

動画像を表示しつつ、画面上のボタン(キャプチャ)クリックでキャプチャすると例外が発生する。

aki_d0x0b

総合スコア1

MFC

MFC (Microsoft Fouondation Class)とは、MicrosoftがVC++用に開発したWindows用アプリケーションのフレームワークです。

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2021/09/12 01:55

■実現したいこと
動画像を表示しつつ、画面上のボタン(キャプチャ)クリックでキャプチャしたい。

■状況
2~3度キャプチャボタンクリックすると、例外でアプリが落ちる。
'System.AccessViolationException' のハンドルされていない例外が xxxxxx.dll で発生しました。

■コード
// 動画表示スレッド
UINT CSample::CallReadThreadProc(LPVOID pParam)
{
CSample *hWndMain = (CSample *)pParam;

hWndMain->m_capture.open(0); while (!hWndMain->m_bIsReadTerminate) { hWndMain->m_capture.read(original); : : } : :

}

// キャプチャボタンクリック
BOOL CSample::OnBtnCaptureClicked()
{
cv::Mat original;

//読み込み m_capture.read(original); //ファイル保存 cv::imwrite(保存先ファイルパス, original); : :

}

■試したこと
m_capture.readがバッティングしていることが原因かと思い、
クリティカルセクションを張ってみましたが、
事象変わらずでした。

■環境
Visual Studio 2010
C++(MFC)
opencv-2.4.9

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2021/09/12 02:00 編集

CriticalSectionで排他するにはちょっと重過ぎる処理に思いますが、それは置いておいても排他、複数スレッドの連携の仕方が間違っていたのでは?
fana

2021/09/14 02:25

> 動画表示スレッド という言葉が気になる.「表示」とは?
yominet

2021/09/14 10:48

提示されているソースが省略されすぎてると思います >m_capture.readがバッティングしていることが原因かと思い のように、当たりをつけて調査することは正しいと思いますが その予測が外れている可能性もあります。 質問掲示板のような場においては、できるだけ情報を隠さないほうがいいです。 ところで・・・ 1.debug/releaseのどっちで(どっちも)おきているのか? 2.VisualStudioからデバッグ起動でもおきるのか?起きているならブレイクして確認できないのか? 3.originalの中身がちゃんと入っているかチェックしてますか? 4.片方のreadで1フレームを取得するともう一方のreadでは同じものは取得できないがそれでいいのか?
退会済みユーザー

退会済みユーザー

2021/09/29 04:31

stacktrace確認して、ソースのどこが該当しているのかを確認する必要がありますね
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問