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