2012-02-15 12 views
0

1つの画像から別の画像にピクセルパッチをコピーしているため、1:1マッピングが得られませんが、新しい画像強度は1またはソース画像からの2つの濃度レベル。OpenCV、ピクセルのパッチを画像から画像にマッピングするときのノイズ

あなたはこれを引き起こしている可能性がありますか?それは単一チャネル画像またはマルチチャネル画像(RGBなど)

void templateCut (IplImage* ptr2Img, IplImage* tempCut, CvBox2D* boundingBox) 
{ 

/* Upper left corner of target's BB */ 
int col1 = (int)boundingBox->center.x; 
int row1 = (int)boundingBox->center.y; 

for(int i=0; i<tempCut->height; i++) 
     {  
     /* Pointer to a row */ 
      uchar * ptrImgBB = (uchar*)(ptr2Img->imageData + (row1+i)*ptr2Img->widthStep + col1); 
      uchar * ptrTemp = (uchar*)(tempCut->imageData + i*tempCut->widthStep); 

      for(int i2=0; i2<tempCut->width; i2++) 
      { 
       *ptrTemp++ = (*ptrImgBB++); 
      } 
     } 
} 
+0

興味のあるプログラミング言語用のタグを追加する必要があります。私はこれが** C **コードだと思いますよね? – karlphillip

+0

そのC++。その発言に感謝します。 – ewleina

+0

私はopencvが十分だと思った。 – ewleina

答えて

1

あり:

これはコードですか?マルチチャネルイメージの場合は、ループ内のチャネルインデックスを考慮する必要があります。

btw:OpenCVは、画像のサブ領域のコピーを実装するのに便利な関心領域(ROI)をサポートします。以下は、OpenCVでのROI使用に関する情報を見つけるためのリンクです。

http://nashruddin.com/OpenCV_Region_of_Interest_(ROI) 
+0

ブラウザは大括弧 "()"をURL形式に変換していることが間違っています。上記のコードは難しいです。 – james

+0

関心領域の定義は、新しいC++インタフェースでは異なります。既存のMatオブジェクトにRectを渡すだけで、Matオブジェクトを作成することができます: 'Mat img = imread(" image.jpg "); Rect r(10,10,100,100); Mat smallImg = img(r); ' – SSteve

+0

はい、opencvの新しいバージョンでは、多くの新しいデータ構造が導入され、よりオブジェクト指向です。しかし、この質問に投稿されたコードは、古いコーディングスタイルからのものと思われます。 – james