6

iOS用のOpenCVでビデオストリームから出てくる画像を切り抜こうとしています。私は特別なことをしようとはしていません。単に画像を切り抜いて表示するだけです。私はこれを試しましたが、これはどちらもうまくいかないようです。デリゲートメソッドとして、現在のcv :: Matイメージが渡されるので、必要なのはトリミング効果を作成するコードだけです。

必要に応じてこれと同じくらい複雑なことをすることもできますが、必要なのは長方形の切り抜きだけなので、もっと簡単な方法があると思います。ROIの設定がうまくいかない理由がわかりません。

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

src.copyTo(croppedImage);


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

^^^機能せず、元の画像を表示するだけです

4

1 に答える 1

24

コードの問題は、src 画像をコピーすることで、画像全体を切り取った画像にコピーすることです。次の 2 つの可能性があります。

1 - データをコピーしない。あなたがしたのと同じです。しかし、2番目のステップがありません。その場合、croppedImage は実際のコピーではなく、src に割り当てられたデータを指していました。

cv::Mat croppedImage = src(myRoi);

2 - データのコピーあり。

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

(1回線方式- cv::Mat croppedImage = cv::Mat(src, myRoi).clone();)

于 2013-01-21T21:12:46.893 に答える