2013-08-01 3 views
0

Android에서 내 매트를 수정/액세스해야하지만 실제로는 정말 느립니다 (3500 * 100 매트에서 실행하려면 약 2 분이 걸렸습니다).Android의 Opencv에서 Mat에 액세스하는 빠른 방법은 무엇입니까?

일부 값을 0으로 설정해야하지만 전부는 아니며이 행을 수정하는 데 사용하고 있습니다.

this.getMyMat().put(i, j, 0); 

조금 더 빠르게 할 생각이 있으십니까?

((myMat.data + myMat.step*row))[j] = 0 
+0

픽셀이 '0'이어야하는지 결정하기 위해 어떤 기준을 사용합니까? OpenCV에는 사용하는 기준에 따라 OpenCV에 내장 된 기능이있을 가능성이 매우 높습니다. – Aurelius

+0

예를 들어 전체 행 또는 행 그룹에 0을 넣고 싶습니다. (뿐만 아니라 컬을 위해, 그래서 정말 내 매트의 2D 모양을 유지해야합니다). – Tiffado

답변

1

당신은 rowRange() 또는 colRange() 당신이 제로 아웃하고자하는 행렬을 추출하고, 실제로 채우기 위해 setTo()에게 전화를 걸 때 사용 : C++에서 내 코드는이 방식을하고, 실행하는 데 적어도 50 배 적은 시간이 걸립니다 값. 이것은 픽셀 단위로 반복하는 것보다 빠릅니다.

Mat rows = this.getMyMat().rowRange(0,3); 
rows.setTo(new Scalar(0)); 
+0

그것의 나의 첫번째 방법보다 낫다. ^^ – Tiffado

관련 문제