ここから本文です

デバックすると以下のようなアクセス違反が急に発生してしまいました。 chapter...

アバター

ID非公開さん

2014/5/2800:29:41

デバックすると以下のようなアクセス違反が急に発生してしまいました。

chapter7_2.exe の 0x00171b4e でハンドルされていない例外が発生しました: 0xC0000005: 場所 0x00000008 を読み込み中にア

クセス違反が発生した。
これは何が原因でしょうか?以下に作りかけですが、ソースコードを記載しますので、ご教授お願いいたします。



#include "stdafx.h"
#include "vector"

using namespace std;

// OpenCV関係のincludeとライブラリのリンク

#include <opencv2\opencv.hpp>

#ifdef _DEBUG // Debugモードの場合・
#pragma comment( lib, "opencv_core249d.lib" ) // opencv_core
#pragma comment( lib, "opencv_imgproc249d.lib" ) // opencv_imgproc・
#pragma comment( lib, "opencv_highgui249d.lib" ) // opencv_highgui
#else // Releaseモードの場合・
#pragma comment( lib, "opencv_core248.lib" ) // opencv_core・
#pragma comment( lib, "opencv_imgproc248.lib" ) // opencv_imgproc・
#pragma comment( lib, "opencv_highgui248.lib" ) // opencv_highgui
#endif

//OpenGL関係ののincludeとライブラリのリンク
#include <GL/glut.h>
#pragma comment( lib, "glut32.lib" ) // opencv_core


IplImage* I;//入力画像
IplImage* I2;//入力画像
GLuint tex; //入力画像のテクスチャID

void display(){
glClearColor(1,1,1,1);
glClear(GL_COLOR_BUFFER_BIT);


glBegin(GL_QUAD_STRIP);
glColor3f(1,1,1);
glTexCoord2f(0,0);glVertex2f(0 ,0 );
glTexCoord2f(0,1);glVertex2f(0 ,I->height );
glTexCoord2f(1,0);glVertex2f(I->width ,0 );
glTexCoord2f(1,1);glVertex2f(I->width ,I->height );
glEnd();

glFlush();

}

void mouse(int b, int s, int x ,int y){
}



int main(int argc, char *argv[]){

I= cvLoadImage("lena-std.tif",1);
cvNamedWindow("画像表示");
cvShowImage("画像表示",I);
cvWaitKey(0);

if((I=cvLoadImage("lena-std.tif",-1))==0) abort();//??
cvCvtColor(I,I,CV_BGR2RGB);

glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGBA);
glutInitWindowPosition(0,0);
glutInitWindowSize(I->width,I->height);
glutCreateWindow("インタラクティブな画像表現");
glutDisplayFunc(display);
glutMouseFunc(mouse);
gluOrtho2D(0,I->width,I->height,0);

glEnable(GL_TEXTURE_2D);
glGenTextures(1,&tex);
glBindTexture(GL_TEXTURE_2D,tex);
gluBuild2DMipmaps(GL_TEXTURE_2D,GL_RGB,I->width,I->height,GL_RGB,GL_UNSIGNED_BYTE,I->imageData);

glutMainLoop();

return 0;
}

閲覧数:
707
回答数:
1
お礼:
250枚

違反報告

ベストアンサーに選ばれた回答

2014/5/2809:34:45

「急に発生」といっても、多分何らかの変更をした結果でしょうから、発生する前後で変わっているところが原因なわけで。
エラーはメモリアクセスの違反ですから、ポインタの扱いがどこかで間違っているのでしょう。

ありがちなのはcvLoadImageでファイルの読み込みに失敗している、というパターン。結果NULLが返るのでそれを使って作業をしようとするとアクセス違反になります。

アバター

質問した人からのコメント

2014/5/30 00:15:57

ありがとうございました!

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる