前提・実現したいこと
ここに質問の内容を詳しく書いてください。
C++、open cv 2.0でパターンマッチングによる着目点の追跡プログラムを作成中です。
■■な機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
もともとのプログラムに使われていた動画を変更したところ以下のようなエラーメッセージが出ました。
エラーメッセージ ```video <情報はありません。opencv_highgui220d.dll のシンボルが読み込まれていません> cv::VideoCapture また、そのままデバッグを続けると、最後にこのようなエラーが出ました。 0x0F4C2331 (opencv_imgproc220d.dll) で例外がスローされました (match.exe 内): 0xC0000005: 場所 0x038C237F の読み取り中にアクセス違反が発生しました ### 該当のソースコード ```ここに言語名を入力 ソースコード
c++
#include "main.h"
/// 指定したフレーム番号の画像をimageに抜き出す
/// imageをグレースケールに変換
int GetGrayImage(cv::VideoCapture& video, int frameNo, cv::Mat& image)
{
const int x = 45, y = 400; // 抜き出す領域の中心点
const int w = 320, h = 568; // 抜き出す領域の幅(w*hが抜き出す幅となる)
CvRect rect = {x, y, w, h};
cv::Mat frame; video.set( CV_CAP_PROP_POS_FRAMES, frameNo); video >> frame; ASSERT( !frame.empty(), "img2は空です"); cv::Mat cut(frame, rect); cv::cvtColor(cut, image, CV_BGR2GRAY); return 0;
}
//カラー画像切り取り用
int GetImage(cv::VideoCapture& video2, int n, cv::Mat& img)
{
CvRect rect = {45, 400, 320, 568}; cv::Mat frame; video2.set( CV_CAP_PROP_POS_FRAMES, n); video2 >> frame; ASSERT( !frame.empty(), "img2は空です"); img = cv::Mat(frame,rect); return 0;
}
///誤差を計算する関数
int gosa(cv::Point point1,cv::Point point2)
{
int t;
t = (point1.x-point2.x)(point1.x-point2.x)+(point1.y-point2.y)(point1.y-point2.y);
return t;
}
int main(void)
{
// 動画の読み込み cv::VideoCapture video("data/mk/1_4c.avi"); // 動画を書き込み用ファイル cv::VideoWriter writeVideo("data/mk/c_video.avi", -1,30.0,cv::Size(320,568));
以下省略。
### 試したこと
ここに問題に対して試したことを記載してください。
環境変数の設定見直し
補足情報(FW/ツールのバージョンなど)
プレークポイントを小刻みに設定してみていくと、main内のcv::VideoCapture videoの所でエラーが起き、読み込みができていないことは理解したのですが、対処がわかりません。
環境変数でopen cvについては設定済みですし、動画へのパスも間違っていないはずです
回答1件
あなたの回答
tips
プレビュー