优化这段代码for (int var = p0.y; var < p1.y; var++) { float x = 0; float y = var; if(var<0) { y = 0; } else if(var>inputImg.rows) { y = inputImg.rows; } if(k!=0) { x = (y-b)/k; if(x>inputImg.cols) { x = inputImg.cols; } } else if(k==0) { x = p0.x; } //float x = p0.x ; int data = inputImg.ptr<uchar>(int (y))[int(x)]; PointX.push_back(x); PointY.push_back(y); Gray.push_back(data); }
时间: 2023-05-14 20:05:34 浏览: 125
详解php中 === 的使用
这段代码可以进行如下优化:
1. 将 inputImg.rows 和 inputImg.cols 存储在变量中,避免在循环中多次访问。
2. 将 int (y) 和 int(x) 存储在变量中,避免在循环中多次计算。
3. 将 inputImg.ptr<uchar>(int (y)) 存储在变量中,避免在循环中多次访问。
优化后的代码如下:
int rows = inputImg.rows;
int cols = inputImg.cols;
int y_int, x_int;
uchar* ptr;
for (int var = p0.y; var < p1.y; var++) {
float x = 0;
float y = var;
if (var < 0) {
y = 0;
} else if (var > rows) {
y = rows;
}
if (k != 0) {
x = (y - b) / k;
if (x > cols) {
x = cols;
}
} else if (k == 0) {
x = p0.x;
}
y_int = static_cast<int>(y);
x_int = static_cast<int>(x);
if (x_int < 0) {
x_int = 0;
} else if (x_int >= cols) {
x_int = cols - 1;
}
ptr = inputImg.ptr<uchar>(y_int);
int data = ptr[x_int];
PointX.push_back(x);
PointY.push_back(y);
Gray.push_back(data);
}
阅读全文