由opencv代码引起的奇怪行为

时间:2017-11-19 11:04:03

标签: opencv python-3.6

我试图使用Get HOG image features from OpenCV + Python?

找到生猪功能

但每当我运行以下存根时,它会导致我的用户会话退出,当我登录到操作系统时,所有窗口都会关闭。

import cv2
img=cv2.imread('Figure_1.png')
print(img.shape)
img=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
hog=cv2.HOGDescriptor()
m=hog.compute(img)
print(img.shape)
cv2.imshow('hog',m)
cv2.waitKey()
cv2.DestroyAllWindows()

有人可以告诉我为什么我正在目睹这种行为和任何建议,如果代码是错误的。

1 个答案:

答案 0 :(得分:0)

代码有一些错误。

  1. 必须使用一些参数初始化cv2.HOGDescriptor()对象 。这可能是代码崩溃的原因之一。
  2. 它是cv2.destroyAllWindows()而不是cv2.DestroyAllWindows()
  3. 我猜你要在按键上销毁图像窗口。为实现这一目标,cv2.destroyAllWindows()应以cv2.waitKey()
  4. 为条件
  5. 此外,您正在尝试在图像窗口中查看Hog。这不是正确的方法。 scikit-learn包具有让您查看HOG的功能。这方面的一个例子是here
  6. 更正的代码是:

    import cv2
    img=cv2.imread('Figure_1.png')
    print(img.shape)
    print(img.shape)
    winSize = (64,64)
    blockSize = (16,16)
    blockStride = (8,8)
    cellSize = (8,8)
    nbins = 9
    
    hog=cv2.HOGDescriptor(winSize,blockSize,blockStride,cellSize,nbins)
    m=hog.compute(img)
    print(img.shape)
    cv2.imshow('hog',img)
    if cv2.waitKey() == 27: #27 refers to the Esc key
        cv2.destroyAllWindows()