请尝试在java中创建一个新的应用程序来匹配图片和视频,图片中模板的匹配工作正常,但当我尝试为视频执行此操作时,总是会出现以下错误消息:
OpenCV错误:断言失败((深度==CV_8U||深度==CV_32F)
这是我的视频图片匹配功能,有人可以帮忙。
public int runVedio(String inFile, String templateFile, int match_method) {
int nbr = 0;
Mat templ = Imgcodecs.imread(templateFile);
VideoCapture capture=new VideoCapture(inFile);
Mat frame = new Mat();
Mat result = new Mat();
capture.read(frame);
// / Do the Matching and Normalize
Imgproc.matchTemplate(frame,templ, result, match_method);
Imgproc.threshold(result, result,0.9,1,Imgproc.THRESH_TOZERO);
//Core.normalize(result, result, 0, 1, Core.NORM_MINMAX, -1, new Mat());
while(true)
{
// / Localizing the best match with minMaxLoc
Core.MinMaxLocResult mmr = Core.minMaxLoc(result);
Point matchLoc;
if (match_method == Imgproc.TM_SQDIFF || match_method == Imgproc.TM_SQDIFF_NORMED) {
matchLoc = mmr.minLoc;
} else {
matchLoc = mmr.maxLoc;
}
if(mmr.maxVal > 0.98)
{
// / Show me what you got
Imgproc.rectangle(frame, matchLoc,
new Point(matchLoc.x + templ.cols(),matchLoc.y + templ.rows()),
new Scalar(0,255,0),2);
Imgproc.rectangle(result, matchLoc,
new Point(matchLoc.x + templ.cols(),matchLoc.y + templ.rows()),
new Scalar(0,255,0),-1);
nbr++;
}
else
{
return nbr;
}
}
}
确保您正确访问视频,以便使用:
while(camera.read(frame))
因为,这是一个视频,你需要访问其中的所有帧,所以使用而。
还有你的结果图像,即
Mat result = new Mat();
必须如下所示,以便两个图像具有相同的大小和相同的颜色代码。
所以换成这个,
new Mat(frame.rows(), frame.cols(), Highgui.CV_LOAD_IMAGE_COLOR);
运行代码并告诉我它是否有效...
问题内容: 我正在尝试基本上在Java上进行模板匹配。我使用简单的算法来找到匹配项。这是代码: 但这是非常缓慢的方法。我测试了2张图像(768×1280)和子图像(384 x 640)。这持续了很长时间。openCV是否可以使用现成的函数cvMatchTemplate()快速执行模板匹配? 问题答案: 您会发现openCV cvMatchTemplate()比您已实现的方法快得多。您创建的是一种统
我正在进行一个小型的个人项目,我必须知道所显示的图像是否是一辆汽车。我使用的是基本的基于OpenCV python的模板匹配。 汽车俯视图:-https://i.stack.imgur.com/zXr1U.jpg 简单的模板匹配是使用一个正图像对另一个正图像进行匹配,从而得到所需的结果。 但是当我们使用像https://i.stack.imgur.com/YLVwc.jpg这样的负面图像时,模板查
Im使用java中的OpenCV,使用eclipse开发,图像以这种方式读取以进行模板匹配。 这很好,但我的图像不在本地计算机中。我应该比较mysql数据库中服务器上的2000个图像。把2000张图片保存到我的电脑上,然后读取它们是没有意义的。 所以我需要的是那个高鬼。imread(infle)读取图像:Highgui。imread(图像中的图像)或Highgui。imread(文件填充),我找不
目标 在这一章中,你将学习 使用模板匹配查找图像中的对象 你会学会这些函数:cv2.matchTemplate(),cv2.minMaxLoc() 理论基础 模板匹配是一种在较大图像中搜索和查找模板图像位置的方法。 OpenCV为此提供了一个函数cv2.matchTemplate()。它只是将模板图像滑过输入图像(就像2D卷积那样),并将模板图像和输入图像的一小块进行比较。在OpenCV中实现了几
目标 在本章中,您将学习 使用模板匹配在图像中查找对象 你将看到以下功能:cv.matchTemplate(),cv.minMaxLoc() 理论 模板匹配是一种用于在较大图像中搜索和查找模板图像位置的方法。为此,OpenCV带有一个函数cv.matchTemplate()。 它只是将模板图像滑动到输入图像上(就像在2D卷积中一样),然后在模板图像下比较模板和输入图像的拼图。 OpenCV中实
我有以下输入: 我的XSL: 目标是对于每个具有query结果/记录的“query1”,我从该query结果/记录/列[@name='id_contact']中获取值,并从“query2”中删除每个在query2/query结果/记录/列[@name='id_contact']中具有该值的记录。这部分可以工作,但下一部分不能正常工作:然后,在删除query2中的值后,获取剩余的query2/id_