0
나는이 코드 조각에 오류가 점점 오전 :잘못된 널 포인터 예외
#include <stdio.h>
#include <cv.h>
#include <highgui.h>
using namespace std;
int main(int argc, char** argv)
{
//load color img specified by first argument
//IplImage *img = cvLoadImage(argv[1]);
IplImage *img = cvLoadImage(argv[1], CV_LOAD_IMAGE_COLOR);
IplImage *red = cvCreateImage(cvSize(img->width, img->height),img->depth,img->nChannels);
IplImage *green = cvCreateImage(cvSize(img->width, img->height),img- >depth,img>nChannels);
IplImage *blue = cvCreateImage(cvSize(img->width, img->height),img->depth,img->nChannels);
// setup the pointer to access img data
uchar *pImg = (uchar*)img->imageData;
// setup pointer to write data
uchar *pRed = (uchar*)red->imageData;
uchar *pGreen = (uchar*)green->imageData;
uchar *pBlue = (uchar*)blue->imageData;
int i, j, rED, gREEN, bLUE, byte;
for(i = 0 ; i < img->height ; i++)
{
for(j = 0 ; j < img->width ; j++)
{
rED = pImg[i*img->widthStep + j*img->nChannels + 2];
gREEN = pImg[i*img->widthStep + j*img->nChannels + 1];
bLUE = pImg[i*img->widthStep + j*img->nChannels + 0];
// RED
pRed[i*img->widthStep + j*img->nChannels + 2] = rED;
// GREEN
pGreen[i*img->widthStep + j*img->nChannels + 1] = gREEN;
// BLUE
pBlue[i*img->widthStep + j*img->nChannels + 0] = bLUE;
}
}
// save images
cvSaveImage(argv[2], red);
cvSaveImage(argv[3], green);
cvSaveImage(argv[4], blue);
return 0;
}
오류는 디버그 주장에 실패했습니다. expression : null 포인터가 잘못되었습니다.
이것은 중단 점이있는 코드 조각입니다.
#ifdef _DEBUG
_CRTIMP2_PURE void __CLRCALL_PURE_OR_CDECL _Debug_message(const wchar_t *message,
const wchar_t *file, unsigned int line)
{ // report error and die
if(::_CrtDbgReportW(_CRT_ASSERT, file, line, NULL, message)==1)
{
::_CrtDbgBreak();
}
}
노란색 화살표가 가리키는 :: _ CrtDbgBreak()