あなたはcompareを使用することができ、ボイドの比較(InputArrayのSRC1、InputArrayのSRC2、OutputArray DST、int型cmpop)
キーアイデアは同じサイズでマットに条件をコードすることであり、これを使用してソースイメージと比較します。ここに例があります。
xは、画像の行(0から512)であり、yは正規グレースケール(0-255)であるように:
レッツは、あなたの基準が放物線曲線であると言います。使用はPICに基準を適用するために比較するよりも
:この基準を考えると、グレー画像を描画することが可能である
が、私はこの例では放物線を使用し、もちろん、自分の基準やニーズに合わせてモデルを適応させる必要があります。
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include "opencv2/photo.hpp"
#include <iostream>
using namespace std;
using namespace cv;
int main() {
Mat src = imread("Lenna.png", CV_LOAD_IMAGE_GRAYSCALE);
namedWindow("src", WINDOW_AUTOSIZE);
imshow("src", src);
Mat someGradientMat(src.size(), CV_8U, Scalar(0));
int limit = src.size().height;
double a = -255.0*4.0/(limit*limit);
double b = 255.0*4.0/limit;
double c = 0;
for (int r = 0; r < limit; r++) {
//value is the parabole y = ax^2 + b + c
int value = (int)(a*r*r + b*r + c);
someGradientMat.row(r).setTo(value);
}
namedWindow("someGradientMat", CV_WINDOW_NORMAL);
imshow("someGradientMat", someGradientMat);
Mat dst;
compare(src, someGradientMat, dst, CMP_LT);
namedWindow("dst", CV_WINDOW_NORMAL);
imshow("dst", dst);
waitKey(0);
return 0;
}
この手法は非常に高密度の画像には使用できますが、お勧めできません。オプティカルフローは、明るさの不変性の仮定のもとで動作し、これは白黒画像によって大きく違反される。両方のフレームで変わらない十分な* bwピクセルがあれば、それはうまくいくかもしれませんが、自分の前提に違反してアルゴリズムを適用していることに注意してください。 –
しかし、そうしたアプローチは「Mat」をどのように作成するかということです。 –
@AlexanderReynoldsもう一度お返事ありがとうございます。バイナリイメージとオプティカルフローについてはわかりませんでした。私は 'calcOpticalFlowPyrLK'を呼び出した結果から来るポイントのセットを処理するために、その人のビデオに基づいて半密度のオプティカルフロー操作を実行できるという希望に乗っていました。 – JDBones