안녕 나는 다음과 같은 코드 조각 한 :오류 데이터를 복사
void ViewPlane::colourPixel(const int u, const int v, const Colour c){
int step = img->widthStep;
cout << "U: " << u << ", V: " << v << ", step: " << step << "\n";
cout << "Colour: " << c.r << ", " << c.g << ", " << c.b << "\n";
cout << "Data: " << v*step+u*3 << ", " << v*step+u*3+1 << ", " << v*step+u*3+2 << "\n";
cout << "Data: " << data[v*step+u*3] << ", " << data[v*step+u*3+1] << ", " << data[v*step+u*3+2] << "\n";
//swap colours round as opencv default image is bgr, not rgb
data[v*step+u*3] = c.b;
cout << "done it\n";
data[v*step+u*3+1] = c.g;
cout << "done it\n";
data[v*step+u*3+2] = c.r;
cout <<"done it\n";
}
IMG가, IplImage 포인터이며, 데이터는 내가 U의 값을 많이하고 통해 반복하고
data = (uchar *)img->imageData;
입니다 v (이미지 좌표) 및 각 픽셀에 색상 할당. 그러나 코드가 u = 148에 도달하면이 픽셀의 중간 지점에서 멈 춥니 다.
값을 인쇄하면이 지점의 녹색 픽셀이 원래 '*'로 나타나며 그 시점까지 유일하게 나타납니다 . 다음은 출력 사본입니다.
....
U: 146, V: 0, step: -1219934912
Colour: 0, 0, 0
Data: 438, 439, 440
Data:
done it
done it
done it
U: 147, V: 0, step: -1219934912
Colour: 0, 0, 0
Data: 441, 442, 443
Data:
done it
done it
done it
U: 148, V: 0, step: -1219934912
Colour: 0, 0, 0
Data: 444, 445, 446
Data: �, *, �
done it
제 질문은이 별이 무엇을 의미합니까? 왜 데이터를 할당하지 못하게합니까?
편집 : 난 그냥 녹색 채널 할당을 주석 시도하고이 오류가 더에 빨강 채널 다시 발생 : 이미지 크기는 400x400px에게
PS입니다. 이번에는 임무를 수행하기 전에 '@'를 개최했기 때문에 이것이 잘못된 일에 아무런 영향을 미치지 않는다고 생각하게됩니다.이 경우 지구상에서 무엇을 할 수 있습니까? 배열 범위를 벗어나지 않고 삽입 할 값이 정수 0입니다 ...
아 .. 죄송합니다. –
"반드시"할 필요는 없지만 다른 사람들을 돕는 것입니다. – josephthomas
저는 스타 캐릭터에 대한 것보다 "-1219934912"라는 단계가 더 걱정 될 것입니다. 길잃은'img' 포인터처럼 보이게합니다. – Pablo