2012-07-07 4 views

답변

6

Documentation,에 따르면 Returns array row or row span. 지정한 행을 반환합니다. 그레이 스케일 모드에서

로드 이미지를 그 폭과 높이를 확인 :

파이썬 터미널의 도움으로 그것을 설명 할 것입니다.

>>> import cv2.cv as cv 
>>> img = cv.LoadImage('approx2.jpg',0) 
>>> img 
<iplimage(nChannels=1 width=300 height=300 widthStep=300)> 

이미지는 300x300 크기입니다. 아래 이미지가 있습니다. 합계 모든 픽셀 촬영

enter image description here

>>> cv.Sum(img) 
(1252271.0, 0.0, 0.0, 0.0) 

이제 우리는
>>> row = cv.GetRow(img,150) 
>>> row 
<cvmat(type=42424000 8UC1 rows=1 cols=300 step=300)> 

>>> cv.Sum(row) 
(14279.0, 0.0, 0.0, 0.0) 

내가 150 행을 가져다가 모든의 합계를했다 우리의 첫 번째 기능을 cv.GetRow() 적용 그 행에있는 요소들. 결과 이미지의 높이가 1로 표시됩니다.

이제 함수 cv.GetRows()를 사용합니다.

>>> rows = cv.GetRows(img,0,150) 
>>> rows 
<cvmat(type=42424000 8UC1 rows=150 cols=300 step=300)> 

>>> cv.Sum(rows) 
(802501.0, 0.0, 0.0, 0.0) 

나는 모든 열을 150 번째에서 가져 왔습니다.

enter image description here

지금 증가로 사용할 수 있습니다이 기능 delta_row에 네 번째 인수가 : 높이를 참조 아래 150 체크 아웃 이미지입니다. 언급 된 단계 크기의 증가분 인 행을 선택하고 그 사이의 모든 것을 건너 뜁니다. 이 모든 5 행을 추출하기 때문에 즉, the function extracts every delta_row -th row from start_row and up to (but not including) end_row .

>>> rows = cv.GetRows(img,0,300,5) 
>>> rows 
<cvmat(type=42420000 8UC1 rows=60 cols=300 step=1500)> 

, 지정된 있는지, 지금은 높이가 30입니다.

결과는 아래와 같다 :

enter image description here

유사은 cv.GetCol() and cv.GetCols()의 경우이다.

0

나는이 C++ 코드 세그먼트를 고려하여 method.Let의 또 다른 호출을 발견했습니다.

CvMat* input_matrix,sub_matrix; 
int start,end; 
//declarations of variables go here 
cvGetRows(input_matrix, &sub_matrix, start, end); 

기능 input_matrix에 END_ROW 및 sub_matrix 포인터를 가리 START_ROW의 행 걸린다. 이제 우리는 해당 포인터를 사용하여 input_matrix에서 시작 행부터 끝 행까지의 값을 채울 수 있습니다.

관련 문제