我一直在尝试使用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) 我是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) 净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#中有一个方法,它返回一个对象!我需要在这里使用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?
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”,列表的大小会无限增长