나는 n x n
행렬을 형성하는 여러 개의 방향에서 하나의 알고리즘을 수행해야하는 mat
을 가지고있다.데이터를 변경하지 않고 매트 해석을 변경할 수 있습니까? (미러링해라.)
나는 mat
을 고전적으로 y = [0..n]과 x = [0..n]로 반복하여 그 위에 몇 가지 기능을 적용하려고한다.
그렇다면 mat
y = [n..0] 및 x = [n..0]을 루프해야합니다. 기본적으로 "다른 방법"입니다. 기본적으로 모든 4 방향에서 mat
에 접근해야합니다 (예 : 마지막 하나 y = [0..n]/x = [n..0] 및 y = [n..0]/x = [0 .. N])
지금 내가 코드 네 번하지만 적용해야하는 작업을 복제하지 않으려는 단순히
void apply(cv::Mat & mat, uint xStart, uint xEnd, uint xDirection, uint yStart, uint yEnd, uint yDirection);
때문에 같은 하나 개의 함수로 최소, 최대 및 방향 값을 전달보다 복잡 알고리즘이 앞을 내다 보겠습니다.
이제 데이터의 헤더 해석을 변경하여 데이터를 변경하지 않고 주어진 매트릭스를 변형 할 수 있는지 생각했습니다. 그런 다음 apply
을 항상 같은 매개 변수로 호출 할 수 있습니다.
cv :: transform, cv :: transpose 등의 작업이 있지만 데이터 복사본을 만들지 만 원하지 않습니다.
데이터를 어떻게 저장하고 있습니까? X와 Y 방향 모두에 대해 순방향과 역방향의 두 종류의 반복자를 만들 수 있습니까? 그러면 가능한 모든 방법으로 자유롭게 조합 할 수 있습니다. –
@RSahu 데이터를 cv :: Mat에 저장하려고합니다. 그 동안 데이터에 액세스 할 수 있지만 상당한 메모리 오버 헤드를 생성하는 매트 뷰를 만들었습니다. – Samuel
나는'opencv' 태그를 놓쳤습니다.나는 자신의'Mat' 클래스를 커스터마이즈 할 수있는 방법을 생각하고있었습니다. 나는 opencv에 대해 많이 모른다. 내 사과. –