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

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

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

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

C++

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

Q&A

1回答

1258閲覧

ピクセル処理の速度比較

mad

総合スコア17

OpenCV

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

C++

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

0グッド

1クリップ

投稿2016/02/11 11:54

data,point,at,pointer,iteratorを使ってピクセル処理の速度を比較するプログラムですが、うまくいかないので質問します。

ビルドは通るのですが実行すると図のようなエラーが表示されます。

イメージ説明

開発環境はwindows7でvisualstudio2010です。ポインターがないということなので、対象としている画像を読み込めていないのでしょうか。原因と解決策を教えていただきたいです。

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

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

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

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

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

guest

回答1

0

こんにちは。

これだけの情報では流石に無理な気もしますが、std::stringでnullptrが発生するってちょっとびっくり。
xstring visual studioで検索してみたら同じようなエラーが発生した人がいました。

もしかして、std::string foo=0;みたいなことやってませんか?
上記の人はUser_tクラス内にstd::string型変数を幾つか確保して、User_t user={0};により、std::string型変数を0で初期化してしまっているようです。(こんなことできるんだ!!)

そのような初期化をやめたら、治るかも知れません。
(情報不足ですので、外しているかも。)

投稿2016/02/11 12:35

編集2016/02/11 12:37
Chironian

総合スコア23272

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

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

mad

2016/02/11 12:52

回答ありがとうございます。このプログラムのソースコードは[こちら](http://nonbiri-tereka.hatenablog.com/entry/2014/06/04/003154)から手に入れたものを#include <time.h>を付け足して実行したものです。stiring型を0で初期化している箇所はないみたいです。
Chironian

2016/02/11 15:27

こんにちは。 分かりました。ソースを少し追いかければ分かると思いますが、このプログラムは起動する時に画像ファイルのバスを与える必要があるようです。 パスを与えない場合、argv[1]=NULLになり、結果、std::stringが0で初期化されてました。 適切に画像ファイルへのパスをコマンドライン・パラメータで指定すれば落ちずに走りました。(OpenCV 2.4.9 & msvc 2013)
mad

2016/02/11 15:46

こんにちは。 回答ありがとうございます。つまりmainにあるPixelAccess pixelaccess(argv[1]);の argv[1]の代わりに画像へのパスを設定すればいいんですね。画像へのパス指定のやり方がよくわからないのですが、画像はリソースファイルにあるので、それを絶対パスで指定すれば大丈夫でしょうか。
Chironian

2016/02/11 16:02 編集

> それを絶対パスで指定すれば大丈夫でしょうか。 その通りです。 Visual Studioのデバッガで実行しているなら、プロジェクト(P)からプロパティ(P)を開き、構成(C):欄を「全ての構成」選択後、構成プロパティ→デバッグのコマンド引数に画像ファイルのフルパスを設定して実行すれば良いです。 コマンドプロンプトから実行しているなら、opcv.exeのあるフォルダへ移動後、「opcv.exe 画像ファイルのフルパス」で起動すれば良いです。 では、頑張って下さい。 【追記】 1つ漏れてました。もし、argv[1]の代わりに画像へのパスを指定する場合は、C言語文字列の\マークによるエスケープに注意下さい。もし、C:\image.jpgを指定するなら、"C:\\image.jpg"とする必要があります。良くはまります。 (プロパティ設定やコマンドライン起動時は普通にC:\image.jpgでよいです。念のため。)
mad

2016/05/12 19:19

返答が遅くなり申し訳ございません。 教えていただいた方法でうまくいきました。 回答していただきありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問