本文整理汇总了C++中FImage::getValue方法的典型用法代码示例。如果您正苦于以下问题:C++ FImage::getValue方法的具体用法?C++ FImage::getValue怎么用?C++ FImage::getValue使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FImage
的用法示例。
在下文中一共展示了FImage::getValue方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: on_bSobelXY_clicked
void MainWindow::on_bSobelXY_clicked() {
if(original != nullImage){
EdgeType type = (EdgeType)ui->cbEdgeTypes->currentIndex();
FImage image(original);
Kernel sobelX = Kernel::createSobelKernelX();
Convolution convX = Convolution(sobelX, type);
FImage resultX = convX.apply(image);
resultX.normalize();
Kernel sobelY = Kernel::createSobelKernelY();
Convolution convY = Convolution(sobelY, type);
FImage resultY = convY.apply(image);
resultY.normalize();
FImage result(resultX.getWidth(), resultY.getHeight());
for(int x = 0; x < resultX.getWidth(); ++x) {
for(int y = 0; y < resultX.getHeight(); ++y) {
float valX = resultX.getValue(x, y);
float valY = resultY.getValue(x, y);
result.setValue(x, y, sqrtf(valX * valX + valY * valY));
}
}
result.normalize();
ui->imageLabel->setPixmap(QPixmap::fromImage(result.toQImage()));
}
}
示例2: calculateMinLambdasStore
FImage InterestPointsDetector::calculateMinLambdasStore(
const FImage& derXStore, const FImage& derYStore)
{
FImage minLambdasStore(source.getWidth(), source.getHeight());
int areaSize = 2;
for (int x = 0; x < source.getWidth(); ++x) {
for (int y = 0; y < source.getHeight(); ++y) {
float a = 0;
float b = 0;
float c = 0;
for (int u = -areaSize; u <= areaSize; ++u) {
for (int v = -areaSize; v <= areaSize; ++v) {
if (u == 0 && v == 0){
continue;
}
int xi = ImageUtil::handleEdgeEffect(
x + u, source.getWidth(), type);
int yi = ImageUtil::handleEdgeEffect(
y + v, source.getHeight(), type);
float ix = 0;
float iy = 0;
if(ImageUtil::insideImage(xi, yi)){
ix = derXStore.getValue(xi, yi);
iy = derYStore.getValue(xi, yi);
}
a += ix * ix;
b += ix * iy;
c += iy * iy;
}
}
float trA = a + c;
float detA = a * c - b * b;
float rad = sqrtf(trA * trA - 4 * detA);
float lambda1 = (trA - rad) / 2;
float lambda2 = (trA + rad) / 2;
float lambdaMin = lambda1 < lambda2 ? lambda1 : lambda2;
minLambdasStore.setValue(x, y, lambdaMin);
}
}
return minLambdasStore;
}
示例3: point
vector<InterestPoint> InterestPointsDetector::determinePointsByRadius(
float threshold, int radius, const FImage &minValuesStore)
{
int width = minValuesStore.getWidth();
int height = minValuesStore.getHeight();
vector<InterestPoint> points = vector<InterestPoint>();
for (int x = 0; x < width; ++x) {
for (int y = 0; y < height; ++y) {
float localMax = minValuesStore.getValue(x, y);
if(localMax < threshold) {
continue;
}
boolean addPoint = true;
for (int dpx = -radius; dpx <= radius; ++dpx) {
for (int dpy = -radius; dpy <= radius && addPoint; ++dpy) {
if(dpx == 0 && dpy == 0){
continue;
}
int xi = ImageUtil::handleEdgeEffect(x + dpx, width, type);
int yi = ImageUtil::handleEdgeEffect(y + dpy, height, type);
float neiValue = 1e9;
if(ImageUtil::insideImage(xi, yi)){
neiValue = minValuesStore.getValue(xi, yi);
}
if (neiValue >= localMax){
addPoint = false;
break;
}
}
}
if(addPoint){
InterestPoint point(x, y, localMax);
points.push_back(point);
}
}
}
return points;
}