2016-11-06 6 views
4
img = cv2.imread('mandrill.png') 
histg = cv2.calcHist([img],[0],None,[256],[0,256]) 

if len (sys.argv) < 2: 
    print >>sys.stderr, "Usage:", sys.argv[0], "<image>..." 
    sys.exit (1) 

for fn in sys.argv[1:]: 
    im = cv2.imread (fn) 

histr = cv2.calcHist([im],[0],None,[256],[0,256]) 
a = cv2.compareHist(histr,histg,cv2.cv.CV_COMP_CORREL) 
print a 

Я пытаюсь использовать код выше, чтобы сравнить корреляцию между гистограмм histr и histg когда я запускаю коду, я получаю ошибкукак использовать compareHist функции OpenCV

'module' object has no attribute 'cv' 

, кажется, что CV3 имена различных корреляционных функций изменились. Каковы имена различных корреляционных функций?

+0

Возможный дубликат http://stackoverflow.com/questions/30013009/opencv-3-0-0-dev-python-bindings-not-working-properly – Mariusz

ответ

15

версия OpenCV используется уже cv2.cv.CV_COMP_CORREL переименована в cv2.HISTCMP_CORREL

изменение имени функции заключается в следующем (левая сторона показывает имена для opencv2, правая рука показывает название последней версии OpenCV (opencv3)):

cv2.cv.CV_COMP_CORREL:: cv2.HISTCMP_CORREL 
cv2.cv.CV_COMP_CHISQR :: cv2.HISTCMP_CHISQR/ HISTCMP_CHISQR_ALT 
cv2.cv.CV_COMP_INTERSECT :: cv2.HISTCMP_INTERSECT 
cv2.cv.CV_COMP_BHATTACHARYYA :: cv2.HISTCMP_BHATTACHARYYA 
+0

Он работал. Пожалуйста, вы знаете методы для Bhattacharyya, chi square и intersection –

+0

Пожалуйста, добавьте требуемые устаревшие API-интерфейсы в вопрос путем редактирования. – ZdaR

10

Как Zdar упоминалось, похоже, константы были переименованы в opencv3.0 к:

cv2.HISTCMP_CORREL 
cv2.HISTCMP_CHISQR 
cv2.HISTCMP_INTERSECT 
cv2.HISTCMP_BHATTACHARYYA 
a = cv2.compareHist(histr,histg,cv2.HISTCMP_CORREL) should work 
3

примера код для сравнения гистограммы в OpenCV 3.2

import cv2 

path='location_of_images' 
im1 = cv2.imread(path+'/'+'first.jpg',0) 
hist1 = cv2.calcHist([im1],[0],None,[256],[0,256]) 

im2 = cv2.imread(path+'/'+'second.jpg',0) 
hist2 = cv2.calcHist([im2],[0],None,[256],[0,256]) 

a=cv2.compareHist(hist1,hist2,cv2.HISTCMP_BHATTACHARYYA) 

print a 

возвращаемого значение показывает, как близко к вашему тестовому изображению с чем один. пример: cv2.HISTCMP_BHATTACHARYYA метод дает нуль (0.0) для того же изображения. другие методы cv2.HISTCMP_CHISQR,cv2.HISTCMP_CHISQR_ALT,cv2.HISTCMP_CORREL cv2.HISTCMP_HELLINGER,cv2.HISTCMP_INTERSECT,cv2.HISTCMP_KL_DIV.

+0

Спасибо за простой, но очень полезный код. Я видел много кодов здесь и в других местах, которые, как правило, усложняют многое. _Question_: Я понимаю, что мы поставляем '[im2]' calcHist, но что делает остальная функция: ([0], None, [256], [0,256]) –

+1

cv2.calcHist (изображения, каналы , mask, histSize, диапазоны [, hist [, accumulate]]) – Lanka