由于 opencv 代码导致的奇怪行为

weird behaviour due to opencv code

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

找到 hog 特征

但是每当我 运行 下面的存根时,它会导致我的用户会话注销,当我重新登录到 os 时,所有 windows 都是 closed.

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. cv2.HOGDescriptor()对象必须用一些参数初始化。这可能是代码崩溃的原因之一。
  2. cv2.destroyAllWindows()而不是cv2.DestroyAllWindows()
  3. 我猜您想在按键时破坏图像 window。为此,cv2.destroyAllWindows() 应以 cv2.waitKey()
  4. 为条件
  5. 此外,您正试图在图像中查看 Hog window。这不是正确的方法。 scikit-learn 包具有让您查看 HOG 的功能。例如 here.

更正后的代码是:

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()