C++

 Computer >> コンピューター >  >> プログラミング >> C++
  1. C++とOpenCVを使って長方形を描画する方法

    OpenCVで長方形を描くには、4つの点(座標)が必要です。以下の図をご覧ください。この図には、x1、x2、y1、y2の4つの点があり、これらが長方形を構成する4つの座標を定義しています。OpenCVで長方形を描画するには、まずこれらの点を定義し、長方形を表示するためのマトリックス(行列)を用意する必要があります。さらに、線の色や線の太さといった関連する値も宣言しておきましょう。基本構文rectangle関数の基本的な構文は以下の通りです。rectangle(whiteMatrix, starting, ending, line_Color, thickness);サンプルコード次のプログラム

  2. C++とOpenCVを使って画像にテキストを描画する方法【putText関数の使い方】

    OpenCVでは、putText()関数を使うことで、画像の上にテキストを描画できます。この関数は<imgproc.hpp>ヘッダー内で定義されています。画像にテキストを描画するには、まず画像を読み込むための行列(Mat)を宣言する必要があります。本記事のサンプルでは、既存の画像ファイルを読み込む代わりに、白一色で塗りつぶした空の行列を作成し、その上にテキストを描画します。テキストを表示する際は、以下の要素を指定する必要があります。テキストの描画開始位置(座標)フォントの種類フォントの色フォントの太さ(線の太さ)putText()関数の基本構文putText(image, Text

  3. OpenCVのatメソッドを使ってピクセル値を変更する方法

    グレースケール画像では、ピクセル値は単一の数値で表されます。一方、RGB画像のようなカラー画像では、ピクセルは3つの値を持つベクトルであり、それぞれの値が3つのチャンネルに対応しています。この記事では、グレースケール画像とカラー画像の両方のピクセル値にアクセスし、ランダムにノイズを追加する関数を作成します。その後、main()関数の中からこの関数を呼び出して、実際の結果を確認します。以下のプログラムは、OpenCVの「at」メソッドを使用してピクセル値を変更する方法を示したものです。サンプルコード#include<iostream> #include<opencv2/high

  4. OpenCVのダイレクトアクセス方式でピクセル値を変更する方法

    ダイレクトアクセス方式とは前回紹介した「at」メソッドでは、ピクセル値にアクセスする際に画像の型を指定する必要がありました。これよりもさらにシンプルな方法が「ダイレクトアクセス方式」です。この方式を使用する場合は、Mat<uchar>、Mat<Vec3b>、Mat<Vec2i> のような Mat テンプレート型を明示的に指定します。型を指定しておけば、配列のように image(行, 列) という形式で直接ピクセル値を読み書きできるため、コードが簡潔になります。サンプルコード以下のプログラムは、OpenCVでダイレクトアクセス方式を使ってピクセル値を変更する例

  5. C++とOpenCVで特定のピクセルの値を取得する2つの方法を解説

    OpenCVで画像内の特定のピクセルの値を読み取るには、「at」メソッドを使う方法と、Mat_クラスによる「直接アクセス」を使う方法の2通りがあります。本記事では、両方のアプローチをサンプルコードとともにわかりやすく解説します。 「at」メソッドでピクセル値を取得する まずは「at」メソッドから見ていきましょう。次のプログラムは、カラー画像の座標 (10, 29) にあるピクセルの値を読み出す例です。 サンプルコード #include<iostream> #include<opencv2/highgui/highgui.hpp> using namespace std;

  6. OpenCVでポインタを使った効率的な色数削減の実装方法

    画像処理では、画像に対して何らかの計算を行います。具体的にはピクセル単位で演算を実行するため、ピクセル数が増えるほど計算にかかる時間も長くなります。計算時間を短縮するには、画像を効率的に走査(スキャン)することが重要です。本記事では、ポインタを使用した効率的な画像走査ループの実装方法を解説します。カラー削減の仕組みここでは、カラー削減戦略を例に挙げて、ピクセル走査のプロセスを見ていきましょう。RGB画像などのカラー画像は3つのチャンネルで構成されています。各チャンネルは同じ数のピクセルを持ちますが、それぞれ対応する異なる値を格納しており、その値は8ビットのunsigned char型です。した

  7. OpenCVのイテレータメソッドを使って画像の色数を減らす方法

    OpenCVには、C++のSTL(標準テンプレートライブラリ)と互換性のある「Mat_イテレータ」クラスが用意されています。このクラスを利用すると、画像内の各ピクセルに非常に簡単かつ効率的にアクセスすることができます。イテレータを使用するには、まず「Mat_::iterator」のようにMat_イテレータクラスのオブジェクトを作成します。「Mat」の直後にアンダースコア(_)を付けて「Mat_」と記述するのは、これがテンプレートメソッドであるためです。テンプレートメソッドでは、オブジェクト生成時に戻り値となるデータ型を明示的に指定する必要があります。そこで本記事では、BGRの3チャンネルを持つ

  8. C++とOpenCVで画像の明るさを変更する方法を解説

    画像の明るさを変更するということは、ピクセルの値そのものを変えることを意味します。具体的には、各ピクセルの現在の値に対して、ある整数値を加算または減算します。すべてのピクセルに一定の値を加算すれば画像は明るくなり、逆に減算すれば明るさは下がります。この記事では、まず明るさを上げる方法を解説し、続いて明るさを下げる方法もご紹介します。明るさを上げる方法OpenCVを使えば、画像の明るさを上げるのは非常に簡単です。明るさを上げるには、各チャンネルの値に一定の数値を加算します。例えば、BGR形式の画像は青(B)、緑(G)、赤(R)の3つのチャンネルを持つため、あるピクセルの現在の値は(B, G, R

  9. C++とOpenCVで画像の明るさを下げる方法をわかりやすく解説

    OpenCVにおける画像の明るさを下げる処理は、明るさを上げる処理と非常によく似ています。両者の違いは、画像に対して「Scalar(B, G, R)」の値を加算するか減算するかという点だけです。ここでは、スカラー値を減算することで、画像全体の明るさを下げる方法を紹介します。各ピクセルのB(青)、G(緑)、R(赤)の各チャンネルから同じ値を引くことで、画像は全体的に暗くなります。なお、OpenCVでは減算の結果が0未満になった場合、その値は自動的に0に制限(飽和処理)されるため、負の値による意図しない色の反転を心配する必要はありません。サンプルコード以下のプログラムは、OpenCVを使って画像の

  10. C++とOpenCVで画像のコントラストを変更する方法を解説

    画像処理において、明るさやコントラストの調整は最もよく使われる編集効果のひとつです。本記事では、OpenCVを使って画像のコントラストを変更する方法を学びます。 コントラストとは何か コントラストは、画像のシャープさ(鮮明さ)を左右する重要な要素です。コントラストが高いほど画像はくっきりとシャープに見え、逆にコントラストが低いほど、柔らかく滑らかな印象になります。 コントラストを変更するということは、ピクセル値の重みを増減させることを意味します。具体的には、各ピクセルの値にある定数を掛けることで実現できます。例えば、画像内のすべてのピクセル値に「2」を掛けると、ピクセル値が2倍になり、結果とし

  11. C++とOpenCVでヒストグラム平坦化を適用する方法

    ヒストグラムとは、画像における輝度(明るさ)の分布を表すものです。例えば、色深度が8ビットの画像を考えてみましょう。これは各ピクセルが0から255までの値を持つことを意味します。画像がRGB画像であれば、赤・緑・青の3つのチャンネルで構成されています。例えば、画像のある点に赤の成分だけが含まれている場合、その色情報は赤チャンネルに記録され、ピクセルの値は0〜255の間で変化します。0は赤がまったくない状態、255は赤が最も強い状態を表します。 ヒストグラムは、すべてのチャンネル・すべての色についてこのような分布を可視化できます。ピクセルの値を操作することで、特定の色の強度を調整することも可能

  12. OpenCVのequalizeHist()関数とは?画像のコントラストを改善するヒストグラム均等化の使い方

    画像のヒストグラムとは画像のヒストグラムとは、画素の輝度値が出現する頻度を視覚化したものです。画像のヒストグラムでは、横軸(X軸)にグレーレベルの輝度値が、縦軸(Y軸)にそれぞれの輝度値の出現頻度が表示されます。ヒストグラム均等化(ヒストグラム平坦化)は、輝度値の分布範囲を引き伸ばすことで画像のコントラストを改善する手法です。OpenCVでは、equalizeHist()関数を使うことで、指定した画像のヒストグラムを簡単に均等化できます。equalizeHist()関数の基本構文この関数の基本的な構文は以下の通りです。equalizeHist(入力行列, 出力行列)グレースケール画像とカラー画

  13. C++とOpenCVでデフォルトカメラから映像をキャプチャする方法

    この記事では、OpenCVを使ってデフォルトカメラにアクセスし、そのカメラからの映像ストリームを表示する方法を解説します。デフォルトカメラとはノートパソコンの場合、内蔵されているWebカメラがデフォルトカメラになります。一方、デスクトップPCの場合は、カメラが接続されているシリアルポートの順番によってデフォルトカメラが決まります。デフォルトのWebカメラから映像をキャプチャする場合、カメラに関する詳細な知識は必要ありません。カメラが正しく接続されていることだけを確認すればOKです。サンプルコード以下のプログラムは、デフォルトカメラから映像ストリームを取得し、リアルタイムで画面に表示します。#i

  14. 【C++】OpenCVでデフォルト以外のカメラから映像をキャプチャする方法

    この記事では、OpenCVを使ってデフォルト以外のカメラから映像(ビデオ)をキャプチャする方法を解説します。実は、デフォルト以外のカメラへのアクセス方法は、デフォルトカメラの場合とほぼ同じです。唯一の違いは、VideoCapture cap(0) の代わりに、使用したいカメラ番号を指定する点だけです。 カメラ番号は、USBポートの接続順序に基づいて割り当てられます。たとえば、カメラが3番目のUSBポートに接続されている場合、そのカメラ番号は「3」になります。 以下のサンプルプログラムは、3番目のカメラにアクセスし、そこから取得したリアルタイムの映像ストリームをウィンドウに表示します。 サンプル

  15. C++とOpenCVでPC内の動画ファイルを読み込んで再生する方法

    この記事では、OpenCVを使って動画ファイルを読み込み、再生する方法を解説します。基本的な流れは、前回の記事で学んだWebカメラからの映像取得とほぼ同じです。唯一の違いは、VideoCaptureクラスのオブジェクト生成時に引数としてカメラ番号を指定する代わりに、読み込みたい動画ファイルのパスを指定するという点です。以下のサンプルプログラムは、C++とOpenCVを使用して、コンピュータ上に保存された動画ファイルを読み込み、再生する方法を示しています。サンプルコード#include<opencv2/opencv.hpp>//VideoCaptureクラスを使用するためのOpenC

  16. C++とOpenCVを使って動画の解像度を変更する方法

    OpenCVでは、set()メソッドを使用することで、フレームの高さや幅を簡単に設定できます。本記事では、このメソッドを使って動画ストリームの解像度を変更する方法を解説します。set()メソッドによる解像度の設定解像度を設定するには、以下の2行のコードを使用します。set(CAP_PROP_FRAME_WIDTH, 320);set(CAP_PROP_FRAME_HEIGHT, 240);1行目はフレームの幅を320ピクセルに、2行目は高さを240ピクセルに設定しています。この2行を組み合わせることで、320×240の解像度を持つ動画ストリームが生成されます。このように、OpenCVを使えばわ

  17. C++とOpenCVを使って動画をパソコンに保存する方法

    動画を保存するには、まず保存先の場所を定義する必要があります。続いてFourCC(フォーシーシー)を指定します。FourCCとは「Four Character Code(4文字コード)」の略で、データ形式を識別するための4バイトの文字列のことです。さらに、動画を保存する際にはFPS(1秒あたりのフレーム数)を宣言するとともに、フレームサイズも指定する必要があります。以下のプログラムは、デフォルトカメラからリアルタイムの映像ストリームを取得し、その動画をCディレクトリに保存する例です。C++とOpenCVを使って動画をパソコンに保存する手順を示しています。サンプルコード#include<o

  18. C++とOpenCVで動画の総フレーム数をカウント・取得する方法

    はじめにこの記事では、OpenCVを使って動画の総フレーム数を求める方法を解説します。OpenCVを利用すれば、動画の総フレーム数を数えて表示するのは非常に簡単です。ただし、一点だけ注意が必要です。リアルタイム映像(Webカメラの映像など)のフレーム数は数えることができません。リアルタイム映像には決まったフレーム数が存在しないためです。以下のプログラムでは、動画ファイルの総フレーム数をカウントし、コンソール画面に表示します。サンプルコード#include<opencv2/opencv.hpp> #include<iostream> using namespace std

  19. C++とOpenCVで動画の現在のフレーム位置を取得する方法

    「現在のフレーム」とは、動画を再生している際に画面に表示されているフレームのことを指します。これは「アクティブフレーム」とも呼ばれます。多くのアプリケーション開発では、現在表示中のフレーム番号を取得する必要が生じることがあります。OpenCVのVideoCaptureクラスには、CAP_PROP_POS_FRAMESプロパティを指定してget()メソッドを呼び出すことで、現在のフレーム位置(0から始まるインデックス)を取得する機能が用意されています。以下のプログラムは、動画の現在のフレーム位置を読み取り、コンソールウィンドウに表示します。サンプルコード#include<opencv2/o

  20. C++とOpenCVで動画の経過時間を計算・表示する方法

    この記事では、C++とOpenCVを使用して、動画再生中の経過時間(Elapsed Time)を計算して表示する方法を詳しく解説します。経過時間の取得方法OpenCVでは、VideoCaptureクラスが持つget()メソッドにCAP_PROP_POS_MSECプロパティを指定することで、現在の再生位置をミリ秒単位で取得できます。この値を1000で割れば、秒単位の経過時間として扱うことが可能です。以下のプログラムは、動画ファイルを再生しながら、その時点での経過時間をコンソールに出力するサンプルコードです。サンプルコード#include<opencv2/opencv.hpp>//Vi

Total 5990 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:257/300  20-コンピューター/Page Goto:1 251 252 253 254 255 256 257 258 259 260 261 262 263