2014-02-28 3 views
0

내가 OpenCV의에 매트랩의 코드를 변환하려고하지만 난matlab에 OpenCV의 코드 변환에

MATLAB 코드 많은 프로그래밍을 모르는로 다음과 같은 라인에 관한 붙어입니다 :

[indx_row, indx_col] = find(mask ==1); 
Indx_Row = indx_row; 
Indx_Col = indx_col; 

for ib = 1:nB; 
    istart = (ib-1)*n + 1; 
    iend = min(ib*n, N); 
    indx_row = Indx_Row(istart:iend); 
    indx_col = Indx_Col(istart:iend); 

OpenCV의 코드 :이 확인인지 아닌지 이해 드릴 수 없습니다

vector <Point> index_rowCol; 
for(int i=0; i<mask.rows; i++) 
{ 
    for(int j=0; j<mask.cols; j++) 
    { 
     if(mask.at<float>(i,j) == 1) 
     { 
      Point pixel; 
      pixel.x = j; 
      pixel.y = i; 

      index_rowCol.push_back(pixel); 
     } 
    } 
} 


//Code about the "for loop" in MatLab code 
for(int ib=0 ; ib<nB; ib++) 
{ 
    int istart = (ib-1)*n; 
    int iend = std::min(ib*n, N); 

    index_rowCol.clear();// Clearing the "index_rowCol" so that we can fill it again from "istart" to "iend"4 
    for(int j = istart; j<iend; j++) 
    { 
     index_rowCol.push_back(Index_RowCol[j]); 
    } 
} 

?

+1

이 MATLAB 코드를 사용하여 원하는 것을 설명 할 수 있습니까? OpenCV를 사용하여 이것을 달성하는 더 쉬운 방법이있을 수 있습니다. – AldurDisciple

답변

1

min 기능의 사용에 실수가 있다고 생각합니다. 여기

for ib = 1:nB; 
    istart = (ib-1)*n + 1; 
    iend = min(ib*n, N); 

IB 은 - 배열 [1,2,3..nB]이고는 또한 어레이를 얻는 결과 N. 각 값을 비교한다.

따라서 결과 : ib - 배열, istart - 배열 및 iend도됩니다.

C에서

++ 구현

for(int ib=0 ; ib<nB; ib++) 
{ 
    int istart = (ib-1)*n; 
    int iend = std::min(ib*n, N); 

당신이 스칼라 작업 (여기 IB, istars 및 IEND는 스칼라이다).

위의 코드가 단계별 디버깅을 사용하는 방식을 더 잘 이해하려면 (중단 점을 설정하고 코드를 실행 한 다음 (F10 키 - matlab 용))