0

RGB の大きな画像と RGB の小さな画像があります。大きな画像の領域を小さな画像に置き換える最も速い方法は何ですか? マルチチャネル ROI を定義してから copyTo を使用できますか? または、各画像をチャネルに分割し、ROI を置き換えてから、それらを再び 1 つに再結合する必要がありますか?

4

1 に答える 1

1

はい。マルチ チャネル ROI と copyTo が機能します。何かのようなもの:

int main(int argc,char** argv[])
{
    cv::Mat src = cv::imread("c:/src.jpg");

    //create a canvas with 10 pixels extra in each dim. Set all pixels to yellow.
    cv::Mat canvas(src.rows + 20, src.cols + 20, CV_8UC3, cv::Scalar(0, 255, 255));

    //create an ROI that will map to the location we want to copy the image into
    cv::Rect roi(10, 10, src.cols, src.rows);
    //initialize the ROI in the canvas. canvasROI now points to the location we want to copy to.
    cv::Mat canvasROI(canvas(roi));

    //perform the copy.
    src.copyTo(canvasROI);

    cv::namedWindow("original", 256);
    cv::namedWindow("canvas", 256);

    cv::imshow("original", src);
    cv::imshow("canvas", canvas);

    cv::waitKey();  

}
于 2012-08-06T04:20:38.610 に答える