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

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

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

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

C++

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

Q&A

1回答

3734閲覧

OpenCVでvectorのメモリ違反エラー

koroneko

総合スコア8

OpenCV

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

C++

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

0グッド

0クリップ

投稿2017/01/24 06:21

編集2017/01/24 06:32

###前提・実現したいこと
はじめまして。

OpenCVでWebカメラから読んだ画像にあるコーナーを検出するプログラムを作りたいと考えています。

###発生している問題・エラーメッセージ
for文を抜ける際にメモリアクセス違反だと実行時エラーが出てしまいます。
ビルドは問題なく通ります。

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

#include "opencv2\opencv.hpp" using namespace cv; using namespace std; int main(int argc, char* argv[]) { VideoCapture cap(0); while (waitKey(5) != 0x1b) { Mat frame; cap >> frame; namedWindow("原画像"); imshow("原画像", frame); Mat gray_image; cvtColor(frame, gray_image, CV_BGR2GRAY); Mat canny_image; Canny(gray_image, canny_image, 60.0, 180.0, 3); namedWindow("Gray-Canny画像"); imshow("Grya-Canny画像", canny_image); Mat harris_image = frame.clone(); vector<Point2f> corners; goodFeaturesToTrack(canny_image, corners, 80, 0.01, 3, Mat(), 3, true); vector<Point2f>::iterator it_corner = corners.begin(); for (; it_corner != corners.end(); ++it_corner) { circle(harris_image, Point(it_corner->x, it_corner->y), 1, Scalar(0, 255, 0), -1); circle(harris_image, Point(it_corner->x, it_corner->y), 8, Scalar(0, 255, 0)); } namedWindow("Harris画像"); imshow("Harris画像", canny_image); } waitKey(0); return 0; }

###補足情報(言語/FW/ツール等のバージョンなど)
Windows10
OpenCV 3.20
Visual Studio 2015

よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

※ 回答ではありません。

OpenCV 3.1, Visual C++ 2015, Windows7(64bit) では停止することはなく、ちゃんと動いてくれました。(64bit/Release)

それと:

× imshow("Grya-Canny画像", canny_image);
○ imshow("Gray-Canny画像", canny_image);

× imshow("Harris画像", canny_image);
○ imshow("Harris画像", harris_image);

投稿2017/01/24 06:59

編集2017/01/24 07:18
episteme

総合スコア16614

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

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

koroneko

2017/01/24 07:21

ありがとうございます。 こちらの環境が悪いということですかね。。。 vectorを使うと決まって同じエラーがでるんですが。。。
episteme

2017/01/24 07:24

んー...とりあえず OpenCV 3.2 → 3.1 して様子をみます?
koroneko

2017/01/24 07:53

3.1にしてみましたが同様のエラーが出てしまいます 記述し忘れましたが32bit環境です これも何か原因としてあるんでしょうか?
episteme

2017/01/24 12:07 編集

さてー メモリ足りないってことないですよね? goodFeaturesToTrackで拾ってくる点の数を減らしてみます? Pointがそんなにメモリ食うとは思えんですけど。 64bitでのre-buildは(そんなに手間じゃないので)ダメ元で。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問