質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

Q&A

0回答

1607閲覧

テンプレートマッチング 動画

shio.

総合スコア4

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

0グッド

0クリップ

投稿2019/10/22 08:38

前提・実現したいこと

openCVを使って、テンプレートマッチングをしようとしています。
ただ、画像ではなく動画のなかの一部分を認識できる仕組みを作りたいです。

発生している問題・エラーメッセージ

エラーメッセージです。

No library found for org.opencv.core.Core
OpenCV for Processing 0.5.4 by Greg Borenstein http://gregborenstein.com
Using Java OpenCV 2.4.5.0
OpenCV for Processing 0.5.4 by Greg Borenstein http://gregborenstein.com
Using Java OpenCV 2.4.5.0
OpenCV for Processing 0.5.4 by Greg Borenstein http://gregborenstein.com
Using Java OpenCV 2.4.5.0
OpenCV Error: Assertion failed (s >= 0) in unknown function, file ......\src\opencv\modules\core\src\matrix.cpp, line 116
error, disabling movieEvent() for elv.mp4
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at processing.video.Movie.fireMovieEvent(Unknown Source)
at processing.video.Movie.invokeEvent(Unknown Source)
at processing.video.Movie$2.rgbFrame(Unknown Source)
at org.gstreamer.elements.RGBDataAppSink$AppSinkNewBufferListener.newBuffer(RGBDataAppSink.java:162)
at org.gstreamer.elements.AppSink$2.callback(AppSink.java:184)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.sun.jna.CallbackReference$DefaultCallbackProxy.invokeCallback(CallbackReference.java:485)
at com.sun.jna.CallbackReference$DefaultCallbackProxy.callback(CallbackReference.java:515)
Caused by: CvException [org.opencv.core.CvException: ......\src\opencv\modules\core\src\matrix.cpp:116: error: (-215) s >= 0
]
at org.opencv.imgproc.Imgproc.matchTemplate_0(Native Method)
at org.opencv.imgproc.Imgproc.matchTemplate(Imgproc.java:7226)
at template_matching.findMario(template_matching.java:72)
at template_matching.movieEvent(template_matching.java:101)
... 15 more

該当のソースコード

import processing.video.;
import gab.opencv.
;
import org.opencv.core.CvType;
import org.opencv.imgproc.Imgproc;
import org.opencv.core.Mat;
import org.opencv.core.Core.MinMaxLocResult;
import org.opencv.core.Core;

OpenCV opencv, small, large, fire;

PImage template;

int w = 540;
int h = 960;
Movie mov;
PVector smallPos, largePos;
float smallConf, largeConf;

void setup() {
small = new OpenCV(this, "2f.jpg");
large = new OpenCV(this, "4f.jpg");
//fire = new OpenCV(this, "fire_mario.png");

smallPos = new PVector();
largePos = new PVector();
//firePos = new PVector();

mov = new Movie(this, "elv.mp4");
opencv = new OpenCV(this, w, h);
size(540, 960);

mov.play();
}

float findMario(PVector p, OpenCV t) {
//opencv.setGray(opencv.getR().clone());
Imgproc.morphologyEx(opencv.getR(), opencv.getR(), Imgproc.MORPH_GRADIENT, new Mat());

t.setGray(t.getR().clone());
Imgproc.morphologyEx(t.getGray(), t.getGray(), Imgproc.MORPH_GRADIENT, new Mat());

Mat result = new Mat();
Imgproc.matchTemplate(opencv.getR(), t.getGray(), result, Imgproc.TM_CCORR_NORMED);

MinMaxLocResult r = Core.minMaxLoc(result);
p.x = OpenCV.pointToPVector(r.maxLoc).x;
p.y = OpenCV.pointToPVector(r.maxLoc).y;
return (float)r.maxVal;
}

void draw() {
image(mov, 0, 0);

noFill();
stroke(255, 0, 0);
strokeWeight(2);

if (smallConf > 0.7) {
text("small - " + smallConf, smallPos.x, smallPos.y - 30);
rect(smallPos.x, smallPos.y, small.width, small.height);
}
if (largeConf > 0.7) {
text("large - " + largeConf , largePos.x, largePos.y - 30);
rect(largePos.x, largePos.y, large.width, large.height);
}

}

void movieEvent(Movie e) {
e.read();
opencv.loadImage(e);
smallConf = findMario(smallPos, small);
largeConf = findMario(largePos, large);

}

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問