小编Vad*_*nov的帖子

匹配图像并使用SURF确定最佳匹配

我一直在尝试使用EMGU示例SURFFeature来确定图像是否在图像集合中.但我在理解如何确定是否找到匹配时遇到问题.

.........原始图像.............................. Scene_1(匹配)..... .................... Scene_2(不匹配)

在此输入图像描述................... 在此输入图像描述................... 在此输入图像描述

我一直在查看文档并花了几个小时寻找可能的解决方案,如何确定图像是否相同.正如您在下面的图片中看到的那样,两者都匹配.

在此输入图像描述 在此输入图像描述

很明显,我试图找到的那个获得更多的匹配(连接线),但我如何在代码中检查这个?

问题:如何过滤出好的匹配?

我的目标是能够将输入图像(从网络摄像头捕获)与数据库中的图像集合进行比较.但在我将所有图像保存到数据库之前,我需要知道我可以将输入与哪些值进行比较.(例如,在数据库中保存objectKeypoints)

这是我的示例代码(匹配部分):

private void match_test()
{
    long matchTime;
    using (Mat modelImage = CvInvoke.Imread(@"images\input.jpg", LoadImageType.Grayscale))
    using (Mat observedImage = CvInvoke.Imread(@"images\2.jpg", LoadImageType.Grayscale))
    {
        Mat result = DrawMatches.Draw(modelImage, observedImage, out matchTime);
        //ImageViewer.Show(result, String.Format("Matched using {0} in {1} milliseconds", CudaInvoke.HasCuda ? "GPU" : "CPU", matchTime));
        ib_output.Image = result;
        label7.Text = String.Format("Matched using {0} in {1} milliseconds", CudaInvoke.HasCuda ? "GPU" : "CPU", matchTime);
     }
}

public static void FindMatch(Mat modelImage, Mat observedImage, out long matchTime, …
Run Code Online (Sandbox Code Playgroud)

c# opencv image surf emgucv

9
推荐指数
1
解决办法
1948
查看次数

如何使用JDBC在一个事务中执行2个更新查询

我是JDBC的新手,我正在尝试更新数据库中的2个表,所以我想在1个事务中执行它,所以如果一个查询失败,另一个也应该失败.我想提供这样的行为,或者只是有机会进行回滚,如果其中一个失败.

这是我的2个查询:

int i = stmt.executeUpdate("INSERT INTO product (title, price, `status`) " +
                "VALUES ( \"" + product.getTitle() + "\", " + product.getPrice() + ", " + product.getStatus().ordinal() + ");");
int j = stmt.executeUpdate("INSERT INTO product_categories (product_id, category_id) " +
                "VALUES (last_insert_id(), " + categoryId + ");");
Run Code Online (Sandbox Code Playgroud)

java mysql jdbc

4
推荐指数
1
解决办法
6334
查看次数

如何将数据从控制器传递到ASP.net MVC中的视图?

净MVC.

对于我认识的每个人,我需要做的事情非常简单.我需要在控制器之间传递数据以在ASP.net MVC中查看.

代码我用控制器编写.

public ActionResult Upload()
{

    ViewBag.Message = "Make a quiz Question here";
    ViewData["CurrentTime"] = DateTime.Now.ToString();
    return View();
}
Run Code Online (Sandbox Code Playgroud)

这是我在视图中添加的代码.

<h2>@ViewBag.Title.</h2>
<h3>@ViewBag.Message</h3>
<div>
    <%: ViewData["CurrentTime"] %>
</div>
Run Code Online (Sandbox Code Playgroud)

但是当我运行这个程序时,它显示出来

<%: ViewData["CurrentTime"] %> 
Run Code Online (Sandbox Code Playgroud)

相反,我需要当前时间的价值.

c# asp.net asp.net-mvc asp.net-mvc-4

4
推荐指数
1
解决办法
4620
查看次数

具有返回对象T的方法中的try-catch

我在c#中有一个方法,它返回一个对象!我需要在这里使用try catch

这是我的方法

public T FromBinary()
{
    T obj;
    try
    {
        using (Stream stream = File.Open(this.serializeFilePath, FileMode.Open))
        {
            var binaryFormatter = new BinaryFormatter();
            obj=(T)binaryFormatter.Deserialize(stream);
        }
    }
    catch (Exception e)
    {
        EventLog.WriteEntry("Cannot convert Binary to object", e.Message + "Trace" + e.StackTrace);
    }
    return obj;
}
Run Code Online (Sandbox Code Playgroud)

但我收到一个错误

使用未分配的局部变量'obj'.

如何在返回对象T的方法中使用try catch?

c# try-catch

3
推荐指数
1
解决办法
444
查看次数

克隆 XML 节点时无限循环“foreach”,C#

XmlDocument xDoc = new XmlDocument();
xDoc.LoadXml("<offers>" +
        "<offer id = '1'>" +
            "<name>Offer1</name>" +
        "</offer>" +
        "<offer id = '2'>" +
            "<name>Offer2</name>" +
        "</offer>" + 
    "</offers>");

XmlNode offers = xDoc.SelectSingleNode("//offers");
XmlNodeList listOffer = xDoc.SelectNodes("//offers/offer");

foreach (XmlNode offer in listOffers)
{
    XmlNode clone = offer.Clone();
    offers.AppendChild(clone);

    Console.WriteLine("Create clone");
}
xDoc.Save("out.yml");
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我得到了一个无限循环“foreach”。但是,如果您在循环内放置断点并打开变量“listOffers”进行跟踪,则程序将以正确的结果结束。为什么会发生这种情况以及如何解决?

跟踪列表优惠

如果您不跟踪变量“listOffers”,列表的大小会无限增长

c# xml clone

3
推荐指数
1
解决办法
102
查看次数

标签 统计

c# ×4

asp.net ×1

asp.net-mvc ×1

asp.net-mvc-4 ×1

clone ×1

emgucv ×1

image ×1

java ×1

jdbc ×1

mysql ×1

opencv ×1

surf ×1

try-catch ×1

xml ×1