0

OpenCVが提供するcreateTrackbar関数を使用して、OpenCVアプリケーションでトラックバーを作成しようとしています。

実際に3つのトラックバーを追加したいと思います。1つは色の範囲をシャッフルし、2つ目はCannyフィルター値をシャッフルし、3つ目はmedianBlur値をシャッフルします。

整数変数へのポインターの追加に苦労しています。整数変数の値はスライダーの位置を反映します。

これが私のinRange&CannyフィルターとmedianNlur関数です。

    Mat range_out;
        inRange(blur_out, Scalar(100, 100, 100), Scalar(120, 255, 255), range_out); 

    Mat mBlur;
        medianBlur(erode,mBlur,7);

        Mat canny_out;
        Canny(mBlur, canny_out, 125,350);


        createTrackbar("Colour values: ", window_Output, &range_out, 255);
createTrackbar("Colour values: ", window_Output, &mBlur, 7);
createTrackbar("Colour values: ", window_Output, &canny_out, 350);

私が読んだものから、変数は整数でなければなりません(つまり、range_outはintではなくMatrix Matです)

誰かが私にまともなチュートリアルを教えてもらえますか?そこで私は探している答えを見つけたり、その方法を説明したりできます。

4

1 に答える 1

0

私は通常、次の方法でコールバック関数を使用します。これにより、コードが煩雑になりません。

const int median_blur_max = 5;
int median_blur;
Mat img;
Mat src, dst;

void callBackFunction( int, void* ) {
    medianBlur(src,dst,median_blur);
    imshow("Controls", img );
}

int main( int argc, char** argv ) {
     namedWindow("Controls", 1);
     createTrackbar("Median blur", "Controls", &median_blur, median_blur_max, callBackFunction );

     callBackFunction(median_blur, 3);

     waitKey(0);
     return 0;
}

この例は完全ではありませんが、callBackFunction の要素と使用方法の概要をよく示しています。

関数を変更するかどうかは不明ですMatが、その場合は、特定の関数呼び出しの Mat を変更するswitch-caseまたはif-sentenceを追加するだけです。callBackFunction

于 2013-02-10T21:28:09.620 に答える