2010-11-28 59 views
3

我是OpenCV的新手,現在我正在做一個高級項目相關的圖像處理。我有一個問題:我可以使用OpenCV的某些功能製作水平或垂直直方圖嗎? 謝謝,OpenCV中的水平直方圖

張庭

回答

1

根據您在評論中提供的鏈接,這就是我相信你正在試圖做的。

您想創建一個具有n個元素的數組,其中n是輸入圖像中的列數。數組的第n個元素的值是第n列中所有像素的總和。

您可以通過循環遍歷輸入圖像的列來計算此數組,使用cvGetSubRect訪問該列中的像素,並使用cvSum來對這些像素進行求和。

下面是一些Python代碼,不會說,假設一個灰度圖像:

import cv 

def verticalProjection(img): 
    "Return a list containing the sum of the pixels in each column" 
    (w,h) = cv.GetSize(img) 
    sumCols = [] 
    for j in range(w): 
     col = cv.GetSubRect(img, (j,0,1,h)) 
     sumCols.append(cv.Sum(col)[0]) 
    return sumCols 
+0

感謝Carnieri,我用cvGetReal2D做了同樣的工作。再次感謝。 – user522659 2010-12-13 16:40:41

1

更新carnieri答案(CV一些功能不工作今天)

import numpy as np 
import cv2 

def verticalProjection(img): 
    "Return a list containing the sum of the pixels in each column" 
    (h, w) = img.shape[:2] 
    sumCols = [] 
    for j in range(w): 
     col = img[0:h, j:j+1] # y1:y2, x1:x2 
     sumCols.append(np.sum(col)) 
    return sumCols 

問候。