2017-02-09 15 views
0

У меня есть двоичное изображение, и мне нужно найти средние значения x и y черной области. Эти значения вычисляются для набора двоичных изображений, а их средние значения x и y построены. Я не знаю, как найти эту область и рассчитать их средние значения x и y. Любую помощь любезно оценивают.Найти среднее положение черных пикселей с использованием python

enter image description here

+0

использование 'cv2.moments' – Miki

ответ

1

Если черные пиксели не зарегистрированы в некоторой структуре данных, просто вычислить центр масс для черных пикселей:

sx = 0 
sy = 0 
black_cnt = 0 
for y in y-range 
    for x in x-range 
    if black(x,y) 
      sx = sx + x 
      sy = sy + y 
      black_cnt++ 

sx = sx/black_cnt 
sy = sy/black_cnt 
+0

Я получаю' IndexError: индекс 255 находится вне границ для оси 0 с размером 200' эта ошибка – karthik

+0

Так что вы написали неправильный цикл – MBo

+0

то, что вы имеете в виду неправильной цикла 'им = CV2 .imread ('v6.tif', 0) RET, молоти = cv2.threshold (им, 120, 255, 1) а = Len (им) печати молоти B = A + 2 = SX 0 SY = 0 blackc = 0 для й в интервале (а): для у в диапазоне (а): пикселей = Im [х, у] , если пиксель == 0: = SX + X SX SY = с + y blackc + = 1 print blackc cv2.waitKey() 'Я делаю это – karthik

0

Вы можете получить средние позиции, используя моменты контуров.

Чтобы найти среднее значение, вы должны вычислить моменты первого порядка контура.

КОД:

#---Read image and obtain threshold--- 
im = cv2.imread('1.jpg', 1) 
img = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY) 
ret, thresh = cv2.threshold(img, 120, 255, 1) 

#---Obtain contours--- 
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE) 
cnts = contours 
cv2.drawContours(im, contours, -1, (0, 255, 0), 1) 

#---Compute the center/mean of the contours--- 
for c in cnts: 
    M = cv2.moments(c) 
    cX = int(M["m10"]/M["m00"]) 
    cY = int(M["m01"]/M["m00"]) 
    print cX 
    print cY 

Значение cX и cY имеет средние позиции контуров.

+0

I устал этот метод, и я получаю 'контуры, hierarchy = cv2.findContours (thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) ValueError: слишком много значений для распаковки этой ошибки – karthik

 Смежные вопросы

  • Нет связанных вопросов^_^