![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
カメラを用いて動画から画像を取り込みトリミングしようとするプログラムを作っています.
最下部のプログラムを貼り付けているところまででデバックしつつ実行すると
"OpenCVwithDShow.exe の 0x00462614 でハンドルされていない例外が発生しました: 0xC0000094: Integer division by zero"
とエラー文がでてきます.
色々考えたのですが、原因が分からないのでどなたかご教授お願いします.
よろしくお願いします.
//トリミング
CvRect cvClipRect(IplImage *frame, CvRect r)
{
r.x = 240;
r.y = 0;
r.width = 1080;
r.height = 1680;
if (r.x < 0) {r.width += r.x; r.x = 0;}
if (r.y < 0) {r.height += r.y; r.y = 0;}
if (r.x >= frame->width ) {r.width -= r.x - frame->width ; r.x = frame->width - 1;}
if (r.y >= frame->height) {r.height -= r.y - frame->height; r.y = frame->height - 1;}
if (r.width > frame->width - r.x) {r.width = frame->width - r.x;}
if (r.height > frame->height - r.y) {r.height = frame->height - r.y;}
return r;
}
IplImage *cvCreateSubRectImage(IplImage *frame, CvRect r)
{
IplImage tmp;
CvMat submat;
cvGetSubRect(frame, &submat, cvClipRect(frame, r));
cvGetImage(&submat, &tmp);
return cvCloneImage(&tmp);
}
//トリミング終了
int main (int argc, char **argv){
CvCapture *capture = 0;
IplImage *frame = NULL;
IplImage *frame1 = NULL;
IplImage *reduce = NULL;
int c;
int x,y;
int max,min;
int h,s;
uchar p[3];
LabelingSS labeling;
short *src_buf;
float centerX,centerY;
HANDLE hCom;
//トリミング関数
// (1)コマンド引数によって指定された番号のカメラに対するキャプチャ構造体を作成する
if (argc == 1 || (argc == 2 && strlen (argv[1]) == 1 && isdigit (argv[1][0])))
capture = cvCreateCameraCapture (argc == 2 ? argv[1][0] - '0' : 0);
/* この設定は,利用するカメラに依存する */
// (2)キャプチャサイズを設定する.
cvNamedWindow ("Capture", CV_WINDOW_AUTOSIZE);
frame1 = cvQueryFrame (capture);
src_buf = new short[ frame1->width * frame1->height ];
// (3)カメラから画像をキャプチャする
while (1) {
frame1 = cvQueryFrame (capture);
frame = cvCloneImage(frame1);
//トリミング呼び出し
CvRect cvClipRect(IplImage *frame, CvRect r);
IplImage *cvCreateSubRectImage(IplImage *frame, CvRect r);
No.1ベストアンサー
- 回答日時:
あの~、mittiさんが今まで同じような質問をして
回答がほとんどついていないかと思うのですが、
それには原因がありましてね、
1.OpenCVを使っている人が少ないこと
2.再現環境を持っていない人が多いこと
3.説明がヘタクソなこと(失礼)
4.やれることをやっていないこと
の4つぐらいの原因があるのですよ。
で、1,2,3はどうしようもないのでアレなんですが、
Integer division by zeroってのは、いわゆる0割ってやつでしてね、
割り算の分母に0を持ってきちゃいけないというルールがありますよね。
それを発生する可能性のある箇所をちょっとは調べたのかってことなんですよ。
ソースコードを拝見していると、ポインタのNULLチェックもしていないし、
そもそもね、キャプチャに問題があるか、トリミングに問題があるかね、
そこら辺は質問する前に切り分けができるんじゃないかと思うんですよ。
キャプチャが正常なら、トリミング処理をコメントアウトして、その画像を表示できればいいわけですから。
そこは確認されたんですかね。
キャプチャが正常なら、トリミング関数の変数の値をデバッガで
逐次表示したり、fprintfなどを使って表示させたりしてね、
問題の範囲を絞り込むことができるんですよ。
一般的な質問でしたら親切な回答者はね、手元で問題を再現させながら
回答するんですよ。しかし貴方の質問の場合はね、前述の1と2の理由でそれができないんですよ。
そうすると、貴方のソースコードから原因を類推するしかない。
結局ね、できるアドバイスは1つだけ。
トリミングが問題なのか、キャプチャが問題なのか、つまりは
正常に動いている部分はどこからどこまでなのか、まずチェックして下さい。
そして動かない部分のみを回答者に提示して下さい。
以上です。
回答有難うございます.
プログラミングについて理解不足でした.
以上のご指導頂いた点を試してみて,
もし理解できない場合は再度質問してみようと思います.
有難うございました.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- その他(プログラミング・Web制作) Pythonにおける物理のシミュレーションでの単位変換について 2 2023/06/02 17:11
- その他(プログラミング・Web制作) 物理の斜方投射で目盛りに数値を入れたい 2 2023/05/27 06:32
- C言語・C++・C# 並列プログラミングのπ計算について 1 2022/07/16 22:30
- その他(プログラミング・Web制作) Pythonによる物理の斜方投射の位置座標表示について 2 2023/06/05 12:46
- PHP 共通の処理をまとめる方法がわからないのでアドバイスお願いします。 1 2022/12/19 20:20
- その他(プログラミング・Web制作) Pythonでのかんたんな物理シミュレーションについての書籍 5 2023/06/02 07:37
- JavaScript アップロードファイルの種類によって処理を分岐させたいのですが書き方が分からずアドバイスお願いします 4 2023/06/17 19:12
- その他(プログラミング・Web制作) 物理の斜方投射の目盛り線とx軸、y軸の追加について 3 2023/05/26 21:11
- その他(プログラミング・Web制作) ボールの動きがスムーズに動いてかつ目盛り線描画を維持するためには 4 2023/05/31 10:01
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
2の補数を計算するプログラム
-
intとlongは同じ?
-
再起呼び出しの回数をカウント...
-
OpenCVによる4値化について
-
迷路を脱出する経路探索プログ...
-
C言語
-
32×16ドットLEDマトリクス表示...
-
迷路の解を見つけるアルゴリズム
-
条件が多い場合
-
モータの制御
-
C言語 5) 正の整数 n を入力(...
-
二分探索アルゴリズムの終了条...
-
コマンドプロンプトのウィンド...
-
C言語で%を使わない余りの出し方
-
並列処理プログラム
-
CppUnitはCプログラムにも使え...
-
カードシャッフルのブログラム...
-
for文初期化で整数と実数を混在...
-
c++ TCHARで文字化け
-
C言語 格子点が多角形の中にあ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
intとlongは同じ?
-
C言語で%を使わない余りの出し方
-
2の補数を計算するプログラム
-
再起呼び出しの回数をカウント...
-
画像の拡大・縮小
-
迷路を脱出する経路探索プログ...
-
分数の足し算をさせるプログラ...
-
OpenCVによる4値化について
-
3のつく数と3の倍数を表示 C言語
-
C言語で簡単なパックマンゲーム...
-
ヌメロンのプログラム
-
C++で表を作成したいのです ...
-
複数の共有メモリの作成
-
カードシャッフルのブログラム...
-
whileとifを使い偶数を出すには
-
関数とビット列
-
【C#】SQL文の中に変数を埋め込...
-
異なるn個の整数からr個の整数...
-
c言語プログラミングについて f...
-
条件が多い場合
おすすめ情報