OpenCV 2.1には、ROIを設定する関数cvSetImageROI()があったことは知っていますが、そのような関数は2.4には存在しません(または、少なくともそのマニュアルとヘルプセクションで見つけることができません)。
ただし、メイジのROIにopencv 2.4を使用する、私が見つけた唯一の役立つコードは次のとおりですが、理解するのに問題があります。
// define image ROI
cv::Mat imageROI;
imageROI= image(cv::Rect(385,270,logo.cols,logo.rows));
// add logo to image
cv::addWeighted(imageROI,1.0,logo,0.3,0.,imageROI);
ここでは、元の画像の右下にある大きな画像に非常に小さなログを追加したいと考えています。
したがって、ここから理解できるのは、ROIを保持するために別のマトリックスが作成されるということです。その寸法はrect関数を使用して指定され、サイズは追加する小さなロゴのサイズと同じになります。
次に、これが私を混乱させるものです。cv::addWeighted(imageROI,1.0,logo,0.3,0.,imageROI);
ここで、addWeightedのソース1はROIディメンションセットであり、ソース2はロゴであり、宛先はROIディメンションセットでもあります。これは正しいです?または私は何かが欠けていますか?
この後、大きな画像にロゴが追加された結果が表示されます。これらのコマンドのどこに大きなイメージが含まれていました。
また、ここで質問する前に、状況を明確にするために自分でコードを試してみたかったのです。しかし、image()が認識されないため、このエラーが発生します。'image': identifier not found
int _tmain(int argc, _TCHAR* argv[])
{
Mat src1, imageROI, logo;
logo = imread("c:\\car1.jpg", -1);
imageROI= image(Rect(385,270,logo.cols,logo.rows));
addWeighted(imageROI,1.0,logo,0.3,0.,imageROI);
namedWindow("meh", CV_WINDOW_AUTOSIZE);
imshow("meh", imageROI);
waitKey(0);
return 0;
}