C でマシン ビジョンと画像処理を行うにはどうすればよいですか?
マシン ビジョンと画像処理は、コンピューター サイエンスの分野の重要な分野であり、画像認識、ターゲット検出、顔認識などの分野で広く使用されています。 C には、マシン ビジョンや画像処理機能の実装に役立つ強力なライブラリやツールが多数あります。この記事では、OpenCV ライブラリを使用して C でマシン ビジョンおよび画像処理を実行する方法と、対応するコード例を紹介します。
画像のロードと表示
まず、画像をロードして表示する必要があります。簡単なコード例を次に示します。
#include <opencv2/opencv.hpp> int main() { // 加载图像 cv::Mat image = cv::imread("image.jpg", cv::IMREAD_COLOR); // 检查图像是否成功加载 if (image.empty()) { std::cerr << "Failed to load image" << std::endl; return -1; } // 创建一个窗口并显示图像 cv::namedWindow("Image", cv::WINDOW_NORMAL); cv::imshow("Image", image); // 等待键盘输入 cv::waitKey(0); return 0; }
この例では、imread
関数を使用して画像をロードし、それをオブジェクトの cv::Mat
に保存します。 。次に、ウィンドウを作成し、imshow
関数を使用して画像を表示します。最後に、waitKey
関数を使用して、ウィンドウを閉じる前にユーザーが任意のキーを押すのを待ちます。
3.1 明るさとコントラストの調整
#include <opencv2/opencv.hpp> int main() { // 加载图像 cv::Mat image = cv::imread("image.jpg", cv::IMREAD_COLOR); // 将图像转换为浮点类型 cv::Mat image_float; image.convertTo(image_float, CV_32F); // 调整亮度和对比度 cv:: Mat adjusted_image = image_float * 1.2 + 20; // 将图像转换回无符号8位整数类型 cv::Mat output_image; adjusted_image.convertTo(output_image, CV_8U); // 创建一个窗口并显示图像 cv::namedWindow("Output", cv::WINDOW_NORMAL); cv::imshow("Output", output_image); // 等待键盘输入 cv::waitKey(0); return 0; }
この例では、まず画像を浮動小数点型に変換し、次にそれを乗算します。明るさとコントラストを調整するために追加された係数とオフセット。最後に、画像は符号なし 8 ビット整数型に変換され、調整された画像が表示されます。
3.2 エッジ検出
#include <opencv2/opencv.hpp> int main() { // 加载图像 cv::Mat image = cv::imread("image.jpg", cv::IMREAD_GRAYSCALE); // 使用Canny算子进行边缘检测 cv::Mat edges; cv::Canny(image, edges, 100, 200); // 创建一个窗口并显示边缘图像 cv::namedWindow("Edges", cv::WINDOW_NORMAL); cv::imshow("Edges", edges); // 等待键盘输入 cv::waitKey(0); return 0; }
この例では、まずイメージをグレースケール イメージに変換し、次にエッジ検出に Canny オペレーターを使用します。最後に、検出されたエッジ画像を表示します。
上記は画像処理の機能のほんの一部を示したものにすぎませんが、OpenCV ライブラリには、画像セグメンテーション、特徴抽出、パターン マッチングなど、他の多くの強力な画像処理およびマシン ビジョン アルゴリズムも提供されています。特定のニーズに応じて、対応する機能とメソッドを選択できます。
要約すると、C および OpenCV ライブラリを使用して、さまざまなマシン ビジョンおよび画像処理関数を実装できます。画像をロードして表示し、さまざまな処理操作を適用することで、多くの興味深い実用的なアプリケーションを実装できます。マシン ビジョンと画像処理に興味がある場合は、C と OpenCV を使用して、より多くの可能性を探ってみるのも良いでしょう。
以上がC++ でマシン ビジョンと画像処理を行うにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。