코드에 문제가 있습니다. 내 코드의 조각은이 내가OpenCV에서 행렬 값을 설정할 때 포인터 오류가 발생했습니다.
116 117 77 0.170833333333333 0.341880341880342
FILE* fid= fopen("treewall","r");
while (fscanf(fid,"%f",&a)==1)
{
printf("%f\n",a);
trainsamplecount=trainsamplecount+1;
}
cout<<trainsamplecount<<endl;
rewind(fid);
float td[2000][7];
int numoftestpoints;
CvMat* traindata=cvCreateMat(trainsamplecount,6,CV_32FC1);
CvMat* trainclasses=cvCreateMat(trainsamplecount,1,CV_32FC1);
CvMat* samplewts=cvCreateMat(trainsamplecount,1,CV_32FC1);
CvMat* neurallayers=cvCreateMat(4,1,CV_32SC1);
CvMat traindata1,trainclasses1,neurallayers1,samplewts1;
cvGetRows(traindata,&traindata1,0,trainsamplecount);
cvGetRows(trainclasses,&trainclasses1,0,trainsamplecount);
cvGetRows(samplewts,&samplewts1,0,trainsamplecount);
cvGetRows(neurallayers,&neurallayers1,0,4);
cvSet1D(&neurallayers1, 0, cvScalar(6));
cvSet1D(&neurallayers1,1,cvScalar(3));
cvSet1D(&neurallayers1,2,cvScalar(3));
cvSet1D(&neurallayers1, 3, cvScalar(1));
int i=0,j=0;
if(fid)
{
for(int i=0;i<trainsamplecount;i++)
fscanf(fid,"%f %f %f %f %f %f %f ",&td[i][0],&td[i][1],&td[i][2],&td[i][3],&td[i][4],&td[i][5],&td[i][6]);
for (i=0;i<trainsamplecount;i++)
{
cout<<i<<endl;
cvSetReal2D(traindata,i,0,(float)td[i][0]);
cvSetReal2D(traindata,i,1,(float)td[i][1]);
cvSetReal2D(traindata,i,2,(float)td[i][2]);
cvSetReal2D(traindata,i,3,(float)td[i][3]);
cvSetReal2D(traindata,i,4,(float)td[i][4]);
cvSetReal2D(traindata,i,5,(float)td[i][5]);
cvSet1D(&trainclasses1,i,cvRealScalar(1));
cvSet1D(&samplewts1,i,cvRealScalar(1));
}
}
그것은 cvSetReal2D에 오류가 있습니다 읽기 일부 샘플 값입니다
아래에 언급되어있다.
OpenCV Error: Bad argument (unrecognized or unsupported array type) in cvPtr2D, file /usr/local/src/OpenCV-2.3.0/modules/core/src/array.cpp, line 1830
terminate called after throwing an instance of 'cv::Exception'
내가 OpenCV의에서 일식에 우분투하고 있어요 : 이 다음과 같은 오류를 제공합니다. 문제 해결을 도와주세요.
인수의 적 cvSetReal2D 포인터로 첫 번째 인수를 필요를 해결하기 위해 필요하다. – SB26
코드가 실제로 완벽하게 보이지 않습니다. 예를 들어 for 루프가 있습니다. –
@ SB26 : 죄송합니다. '데이터'와 '데이터 1'이 섞여 있습니다. –