gpt4 book ai didi

java - 视频中的 OpenCv 匹配模板 [Java]

转载 作者:太空宇宙 更新时间:2023-11-03 23:14:52 24 4
gpt4 key购买 nike

请尝试在 java 中创建一个新的应用程序来匹配图片和视频,图片中的模板匹配工作正常,但是当我尝试为视频做它时,我总是有这个错误消息:

OpenCV Error: Assertion failed ((depth == CV_8U || depth == CV_32F) && type == _templ.type() && _img.dims() <= 2) in cv::matchTemplate, file C:\builds\master_PackSlaveAddon-win64-vc12-static\opencv\modules\imgproc\src\templmatch.cpp, line 1062 Exception in thread "main" CvException [org.opencv.core.CvException: cv::Exception: C:\builds\master_PackSlaveAddon-win64-vc12-static\opencv\modules\imgproc\src\templmatch.cpp:1062: error: (-215) (depth == CV_8U || depth == CV_32F) && type == _templ.type() && _img.dims() <= 2 in function cv::matchTemplate ]

这是我的视频与图片匹配功能,请有人帮忙。

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 - 视频中的 OpenCv 匹配模板 [Java],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41966988/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com