入門ガイド: OpenCV の copyTo 関数とその rect を使用したアプリケーション シナリオの詳細な分析

序文

OpenCV は、画像処理およびコンピュータ ビジョン タスクで広く使用されている強力なオープン ソース コンピュータ ビジョン ライブラリです。OpenCV では、copyTo 関数は重要な画像処理関数であり、異なる画像間でピクセル データをコピーすることができ、rect (長方形) の使用と組み合わせることで、より興味深い関数を実現できます。この記事では、copyTo 関数の使用法を詳しく説明し、初心者向けの例とアプリケーション シナリオを示します。

  1. CopyTo 関数の概要
    OpenCV では、copyTo 関数のプロトタイプは次のとおりです。
void cv::Mat::copyTo(OutputArray dst, InputArray mask = noArray()) const

この関数を使用すると、現在のソース イメージを宛先イメージ (dst) にコピーできます。オプションでマスクを使用して、コピーするピクセルの領域を指定します。さまざまなサイズやデータ型の画像を処理できます。

dst: 宛先イメージ。作成された Mat オブジェクトまたはイメージ マトリックスであり、ソース イメージと同じサイズとデータ型を持つ必要があります。
マスク: ピクセルがコピーされる領域を指定するオプションのパラメーター。マスクが指定されている場合、ゼロ以外のマスク値を持つピクセルのみが宛先イメージにコピーされます。マスクが指定されていない場合は、デフォルトでソース イメージ全体がコピーされます。

copyTo関数の例

#include <opencv2/opencv.hpp>

int main() {
    
    
    // 读取源图像和目标图像
    cv::Mat srcImage = cv::imread("source.jpg", cv::IMREAD_COLOR);
    cv::Mat dstImage = cv::imread("destination.jpg", cv::IMREAD_COLOR);

    // 检查图像是否成功读取
    if (srcImage.empty() || dstImage.empty()) {
    
    
        std::cout << "无法读取图像文件" << std::endl;
        return -1;
    }

    // 将源图像复制到目标图像中(完全覆盖)
    srcImage.copyTo(dstImage);

    // 显示结果
    cv::imshow("源图像", srcImage);
    cv::imshow("目标图像", dstImage);
    cv::waitKey(0);

    return 0;
}

上の例では、ソース画像 (source.jpg) を宛先画像 (destination.jpg) にコピーし、両方の画像をウィンドウに表示しました。マスクが使用されないため、ソース画像全体が宛先画像の対応する位置にコピーされます。

copyTo関数とrectの応用シナリオ

copyTo関数はrectと組み合わせて使用​​することで、画像の部分的なコピー、貼り付け、結合を実現します。以下は、rect を使用してソース画像の特定の領域を宛先画像にコピーする例です。


#include <opencv2/opencv.hpp>

int main() {
    
    
    // 读取源图像和目标图像
    cv::Mat srcImage = cv::imread("source.jpg", cv::IMREAD_COLOR);
    cv::Mat dstImage = cv::imread("destination.jpg", cv::IMREAD_COLOR);

    // 检查图像是否成功读取
    if (srcImage.empty() || dstImage.empty()) {
    
    
        std::cout << "无法读取图像文件" << std::endl;
        return -1;
    }

    // 定义矩形区域(ROI)并复制到目标图像中
    cv::Rect rect(100, 100, 200, 200);
    cv::Mat roi = srcImage(rect);
    roi.copyTo(dstImage(rect));

    // 显示结果
    cv::imshow("源图像", srcImage);
    cv::imshow("目标图像", dstImage);
    cv::waitKey(0);

    return 0;
}

上の例では、長方形 Rect(100, 100, 200, 200) を使用してソース イメージ内の特定の領域を指定し、それを宛先イメージ内の同じ場所にコピーします。このようにして、ターゲット画像内のソース画像の局所領域を抽出できます。

結論は

この記事では、OpenCV の copyTo 関数と、それを rect と組み合わせて使用​​する方法を紹介します。copyTo関数はOpenCVの画像処理において基本的かつ重要な関数であり、初心者にとっては必須のスキルです。copyTo 関数を理解して使いこなすことで、画像処理でコピー、貼り付け、結合などの操作を実装できるようになり、より興味深いアプリケーション シナリオが広がります。この記事が、画像処理やコンピューター ビジョンのタスクに OpenCV をより効果的に活用するのに役立つことを願っています。

Supongo que te gusta

Origin blog.csdn.net/qq_46017342/article/details/131949503
Recomendado
Clasificación