2013-01-21 17 views
5

iOS用のOpenCVでビデオストリームから出力される画像をトリミングしようとしています。私は空想的な何かをしようとするのではなく、単純にイメージを切り取り、それを表示しようとしています。私はthisthisを試しましたが、どちらもうまくいかないようです。デリゲートメソッドとして、渡された現在のcv :: Matイメージを取得します。したがって、必要なのは、トリミングエフェクトを作成するコードだけです。OpenCV 2.4.3(iOS)のクロップマット画像

thisとして複雑として必要であれば、私は何かを行うことができますが、私は唯一の長方形の作物を必要とするので、私はもっと簡単な方法があると思います。私はROIを設定することが私のために働いていない理由を理解できません!

cv::Rect myROI(10, 10, 100, 100); 
cv::Mat croppedImage = src(myROI); 

src.copyTo(croppedImage); 


[displayView setImage:[UIImage imageWithCVMat:src]]; 

^^^機能していない、ちょうどあなたのコード内で、元の画像に

+0

こんにちは、同じ問題に直面しています。あなたは私が前にあなたの最初の提案をしようとした私のポストを見http://stackoverflow.com/questions/14756505/croping-an-image-in-ios-uisng-opencv-face-detect – 2vision2

答えて

21

問題を表示するには、SRCの画像をコピーすることにより、あなたはトリミングされた画像に画像全体をコピーすることです。 - データをコピーせずに

1: 2つの可能性があります。それはあなたがしたのと同じです。しかし、第二段階なしで。データをコピーして - その場合croppedImageは、SRCに割り当てられたデータ指さ:

cv::Mat croppedImage = src(myRoi); 

2を実際のコピーではありません。

cv::Mat croppedImage; 
cv::Mat(src, myRoi).copyTo(croppedImage) 
+1

を持ってください、そして時にIすることができますそれを表示、それは非常に(テレビの静的のように見えた)探して台無しだった。あなたが言及した2番目の方法は、私のために働いてくれました。 – Jameo

+2

@ Jameoあなたの表示方法は、おそらくデータが連続していると仮定していました。これは最初の方法では真ではありません。 – Hammer

+0

第2の提案は私のために働いたが、最初のものは失敗した。 – jarora