如何用php对mongodb进行模糊查询

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用php对mongodb进行模糊查询相关的知识,希望对你有一定的参考价值。

参考技术A 你好,试试这个 $mongo_db->like('name','维达'); 如果我的回答没能帮助您,请继续追问。 您也可以向我们团队发出请求,会有更专业的人来为您解答。

如何用opencv找到模糊角位置?

【中文标题】如何用opencv找到模糊角位置?【英文标题】:how to find blur corner position with opencv? 【发布时间】:2013-10-22 06:53:25 【问题描述】:

我想找到内部有角的模糊图像的角位置。像下面的例子:

我可以确保图像内只有一个角,并且我假设

角是黑白棋盘的一部分。

如何使用 openCV 检测交叉位置? 谢谢!

【问题讨论】:

使用阈值函数仅获取二值图像,而不是使用 CornerHarris 查找角点 【参考方案1】:

通常可以使用渐变来确定角点:

Gx = im[i][j+1] - im[i][j-1]; Gy = im[i+1][j] – im[i-1][j];

G^2 = Gx^2 + Gy^2;

teta = atan2 (Gy, Gx);

由于您的图像模糊,您应该以更大的比例计算梯度:

Gx = im[i][j+delta] - im[i][j-delta]; Gy = im[i+ delta][j] – im[i- delta][j];

这是我在 delta = 50 时得到的结果:

梯度范数(乘以 20)

gradient norm http://imageshack.us/scaled/thumb/822/xdpp.jpg

渐变方向:

gradient direction http://imageshack.us/scaled/thumb/844/h6zp.jpg

【讨论】:

【参考方案2】:

另一种解决方案

#include <opencv2/opencv.hpp>

using namespace cv;
int main()


    Mat img=imread("c:/data/corner.jpg");
    Mat gray;
    cvtColor(img,gray,CV_BGR2GRAY);
    threshold(gray,gray,100,255,CV_THRESH_BINARY);
    int step=15;
    std::vector<Point> points;
    for(int i=0;i<gray.rows;i+=step)
        for(int j=0;j<gray.cols;j+=step)
            if(gray.at<uchar>(i,j)==255)            
                points.push_back(Point(j,i));

    //fit a rotated rectangle

    RotatedRect box = minAreaRect(Mat(points));
    //circle(img,box.center,2,Scalar(255,0,0),-1);

    //invert it,fit again and get average of centers(may not be needed if a 'good' threshold is found)
    Point p1=Point(box.center.x,box.center.y);
    points.clear();
    gray=255-gray;
    for(int i=0;i<gray.rows;i+=step)
        for(int j=0;j<gray.cols;j+=step)
            if(gray.at<uchar>(i,j)==255)
                points.push_back(Point(j,i));
    box = minAreaRect(Mat(points));
    Point p2=Point(box.center.x,box.center.y);

    //circle(img,p2,2,Scalar(0,255,0),-1);
    circle(img,Point((p1.x+p2.x)/2,(p1.y+p2.y)/2),3,Scalar(0,0,255),-1);
    imshow("img",img);
    waitKey();

    return 0;

【讨论】:

干得好!非常感谢。嗯......我不能很好地理解你的方法。你能简要解释一下吗?再次感谢。【参考方案3】:

与其像其他人建议的那样立即进行大规模的工作,我建议先缩小尺寸(这具有去模糊的效果),做一次哈里斯传球以找到角落,然后扩大其位置并传球findCornerSubpix 的全分辨率和一个大窗口(大到足以包含强度的明显鞍点)。

通过这种方式,您可以获得两全其美:快速检测以初始化细化,并根据原始图像进行准确细化。

另见this other relevant answer

【讨论】:

谢谢哥们!我以前一直在尝试。实际上,用缩小图像找到角落的粗略位置是可以的。但是,使用 findCornerSubpix 定位精确位置的结果并不好。我想我可能必须实现一个新的子像素查找功能。 令人惊讶! findCornerSubpix 的行为究竟如何(在全分辨率下,在使用粗略位置初始化之后)?它会收敛到某个随机的地方,还是靠近一个合理的鞍点,但还不够近?您是否尝试过增加迭代次数? 澄清一下,你的图像确实有一个明显的鞍点,findCornerSubpix 应该很容易收敛到它。查看以 3d 形式绘制强度时的样子:i.imgur.com/xuVOmU6.jpg

以上是关于如何用php对mongodb进行模糊查询的主要内容,如果未能解决你的问题,请参考以下文章

如何用MYSQL模糊查询?

如何用java实现模糊查询

mongodb 怎么对多个字段模糊查询

php+mysql模糊查询功能

如何用EXCEL VBA编写模糊查询程序,并将结果显示在工作表中

mongodb模糊查询语句用法