эй, ребята! Я пытаюсь обрабатывать большие данные непрерывно в OpenCV. Вот мой код:Как обрабатывать большие данные непрерывно в OpenCV
vector<Point2f> up_imagePoints;
vector<Point2f> left_imagePoints;
vector<Point2f> right_imagePoints;
Mat frame1_silhouette;
Mat frame2_silhouette;
Mat frame3_silhouette;
Mat frame1_reconstruction;
Mat frame2_reconstruction;
Mat frame3_reconstruction;
for (int i = 0; i < 16777216; ++i){
//check point range
if (up_imagePoints[i].x >= col_bound || up_imagePoints[i].y >= row_bound) {
coor_test = 1;}
else if (left_imagePoints[i].x >= col_bound || left_imagePoints[i].y >= row_bound) {
coor_test = 1;}
else if (right_imagePoints[i].x >= col_bound || right_imagePoints[i].y >= row_bound) {
coor_test = 1;}
//check silhouette
if (coor_test == 0) {
if (frame1_silhouette.at<uchar>((cvFloor(up_imagePoints[i].x)),(cvFloor(up_imagePoints[i].y))) == 255)
value_test = 1;
else if (frame2_silhouette.at<uchar>((cvFloor(left_imagePoints[i].x)),(cvFloor(left_imagePoints[i].y))) == 255)
value_test = 1;
else if (frame3_silhouette.at<uchar>((cvFloor(right_imagePoints[i].x)),(cvFloor(right_imagePoints[i].y))) == 255)
value_test = 1;
if (value_test == 0) {
frame1_reconstruction.at<uchar>((cvFloor(up_imagePoints[i].x)),(cvFloor(up_imagePoints[i].y))) = 255;
frame2_reconstruction.at<uchar>((cvFloor(left_imagePoints[i].x)),(cvFloor(left_imagePoints[i].y))) = 255;
frame3_reconstruction.at<uchar>((cvFloor(right_imagePoints[i].x)),(cvFloor(right_imagePoints[i].y))) = 255;}
}
value_test = 0;
coor_test = 0;
cout<<"round "<<i<<endl;
}
Размеры up_iamgePoints, left_imagePoints и right_imagePoints являются 1x16777216. Они содержат координаты изображений. Размеры framex_silhouette и framex_reconstruction являются 480x640
Есть три шага:
- проверки того, являются ли координаты x_imagePoints в пределах диапазона: col_bound (640) и row_bound (480)
- проверки ли те же позиции из framex_silhouette все 255
- применять 255 на позиции от шага 2 к framex_reconstruction
программа всегда терпит неудачу в другое состояние, например, когда i == 1900566
Означает ли какой-либо орган, как обрабатывать большие данные непрерывно в OpenCV без ошибок?
для какого индекса используется 'z'? почему вы никогда не инициализируете «я»? – berak
@berak, я прочитал код для четкого объяснения. 'x', 'y', 'z'indexes используются для объяснения большого вокселя – oilpig