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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

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

Q&A

解決済

1回答

6014閲覧

Visualstdioのデバッグエラー

sakuragi

総合スコア15

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

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

0グッド

0クリップ

投稿2017/11/12 02:18

プログラムを実行するといつも下のようなエラーが出てしまいます
どこを直したらよいのでしょうか?

エラーメッセージ Debug Assertion Failed! Program:...lue¥Documents¥Visual Stdio 2015¥Projects¥マッチング¥Release¥マッチング.exe File:f:¥dd¥vctools¥crt_bld¥self_x86¥crt¥src¥dbgheap.c Line:1332 Expression:_CrtlsValidHeapPointer(pUserData)

###該当のソースコード

#include <stdio.h> #include "OpenCV.h" #define IMAGENUMBER 3 #define IMAGENUMBERS 3 using namespace cv; int main(int argc, char *argv[]) { //入力画像(探索される画像) Mat edge_img, edge_img_org,gray_img,gray_img_org,storage_img,storage1_img; Mat search_img = imread(argv[1], 0); threshold(search_img, edge_img, 0, 255,THRESH_BINARY | THRESH_OTSU); //findContours(edge_img, storage_img, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE); Mat search_img_org = imread(argv[1], 0); threshold(search_img_org, edge_img_org, 0, 255, THRESH_BINARY | THRESH_OTSU); //findContours(edge_img_org, storage1_img, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE); //テンプレート画像3枚 Mat tmp_img[IMAGENUMBER]; tmp_img[0] = imread("tmp0.JPG", 0); tmp_img[1] = imread("tmp1.JPG", 0); tmp_img[2] = imread("tmp2.JPG", 0); Mat tmps_img[IMAGENUMBERS]; threshold(tmp_img[0], tmps_img[0], 0, 255, THRESH_BINARY | THRESH_OTSU); threshold(tmp_img[1], tmps_img[1], 0, 255, THRESH_BINARY | THRESH_OTSU); threshold(tmp_img[2], tmps_img[2], 0, 255, THRESH_BINARY | THRESH_OTSU); //類似度比較手法 int method[6]{ CV_TM_SQDIFF, CV_TM_SQDIFF_NORMED, CV_TM_CCORR, CV_TM_CCORR_NORMED, CV_TM_CCOEFF, CV_TM_CCOEFF_NORMED }; int m = 0; printf("類似度比較手法選択\n"); printf("[0]:SSD(差の2乗和)\n[1]:SSD(差の2乗和正規化)\n[2]:SAD(乗算)\n[3]:SAD(乗算正規化)\n[4]:NCC(相関係数)\n[5]:NCC(相関係数正規化)\n"); printf("[5]NCC(相関係数正規化)のみ使用可能\n"); scanf("%d", &m); Mat result_img[IMAGENUMBER]; //テンプレートマッチングした結果のMat Point max_pt[IMAGENUMBER]; Rect roi_rect[IMAGENUMBER]; double maxVal[IMAGENUMBER]; for (int i = 0; i < IMAGENUMBER; i++) { matchTemplate(edge_img, tmps_img[i], result_img[i], method[m]); minMaxLoc(result_img[i], NULL, &maxVal[i], NULL, &max_pt[i]); printf("tmp_img[%d]: maxVal(Score) = %lf , max_pt.x = %d , max_pt.y = %d\n", i + 1, maxVal[i], max_pt[i].x, max_pt[i].y); roi_rect[i].x = max_pt[i].x; roi_rect[i].y = max_pt[i].y; roi_rect[i].width = tmps_img[i].cols; roi_rect[i].height = tmps_img[i].rows; rectangle(edge_img_org, roi_rect[i], Scalar(0x00, 0x00, 0xff, 2)); } namedWindow("Output", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO); imshow("Output", edge_img_org); waitKey(0); destroyAllWindows(); return 0; }

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

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

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

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

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

toris-birds

2017/11/12 04:11 編集

おそらくメモリ破壊ですが、該当箇所を探すのは単純なデバッグ作業となってしまいます。各変数をメモリウインドウで見ながら破壊されている場所を探すのが良いかと思います。
guest

回答1

0

ベストアンサー

出力された情報を見る限り、リリースビルドした実行ファイルをデバッグしている、ということですかね?
だとしたらデバッグ用のライブラリとリリース用のライブラリが混在したことでヒープエラーになっているのではないでしょうか。

投稿2017/11/14 05:33

KoichiSugiyama

総合スコア3041

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問