C+&&Opencvコンソール文字アニメーションを実現

3834 ワード

C/C+&&Opencvコンソール文字アニメーションを実現
  • 原理概要
  • 画像中のある画素点の色
  • を取得する.
  • ピクチャ読み込み変数
  • 画像を階調図
  • に変換する.
  • 画像のある画素点の色
  • を取得する.
  • コンソールカーソルを指定座標
  • に移動する.
  • まとめ
  • 原理の概要
    まずopencvで画像中の特定の画素点の色を取得し、色の範囲に応じて異なる文字を選択してコンソールの特定の位置で印刷すると、画素点の色を取得することに重点を置く
    画像内のピクセルポイントの色を取得
    画像読み込み変数
    OpencvではMatタイプを使用して画像を保存できます
    Mat img;
    img = imread("    ");
    

    画像をグレースケールに変換
    なぜ画像を階調図に変えるのですか?主に画像の色を単一にして後の条件判断の作業量を減らすためですが、このステップの処理はしなくてもいいです.
    Mat gimg;
    //img          gimg 
    cvtColor(img, gimg, CV_BGR2GRAY);
    

    画像のピクセルポイントの色を取得
    この値を格納するには、新しい変数タイプScalarが必要です.
    Scalar color = gimg.at<uchar>(row, col);
    //            uchar  Vec3b
    

    (row,col)画素が存在する座標点であるネストループを用いてすべての画素点を得ることができるcolorは、取得したすべての値Scalarタイプを格納するために適切なデータ構造を選択することができる4つのパラメータがあり、Scalar(B,G,R,alpha)はそれぞれcolor[0]、color[1]...color[3]を用いて具体的な数値Bにアクセスすることができ、G,Rの最大値255はここで最も重要な部分ですでに完了している
    コンソールカーソルを指定した座標に移動
    ここではこの方法は推奨されません.これにより、印刷速度がある程度低下し、実行効果に影響します.事前に取得したピクセルポイントに関する情報に適切なデータ構造を使用して順次アクセスすることを推奨します.この方法では、コンソールのカーソルを指定された位置に移動できます(推奨されません)
    #include
    void gotoxy(int x, int y)
    {
         
    	COORD pos;
    	pos.X = x;
    	pos.Y = y;
    	SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
    }
    

    まとめ
    主な方法は以上の内容であり、具体的な論理とコードの最適化については、必要なヘッダファイルを自分で手配することができる.
    #include 
    #include 
    #include