0

画像の一部があり、写真に示すように 25 ピクセル分下に移動したいと考えています。

ここに画像の説明を入力

シフトダウンしたい領域のマスクがあります画像の合計サイズは変更しないでください。というわけで、操作は切り貼りです。切り取った領域は 0 または 255 で埋めることができます。

プラットフォームは C++

4

1 に答える 1

3

2 つのサブイメージを作成します。1 つsub1目は移動するパターンの周囲にあり、2 つ目sub2は と同じサイズで移動sub1先の周囲にあります。にコピーsub1してから、黒または白でsub2塗りつぶします。sub1明らかに、2 つのサブイメージと同じサイズでトリミングされたマスクを使用する必要があります。

これは、アイデアを説明するための疑似コードです。

cv::Mat YourImage;
cv::Mat YourMask;
std::vector<cv::Point> YourPatternContour;

cv::Rect sub1ROI = cv::boundingRect(YourPatternContour);
cv::Mat sub1 = YourImage(sub1ROI);
cv::Mat mask = YourMask(sub1ROI);

cv::Rect sub2ROI = sub1ROI + cv::Point(25,25);
cv::Mat sub2 = YourImage(sub2ROI);

sub1.copyTo(sub2, mask);
sub1.set(0, mask);
于 2013-03-01T13:10:12.767 に答える