При вызове cv2.connectedComponents
, распечатывании его результата и последующем вызове, я получаю ошибку сегментации при втором вызове. Мне удалось сузить его до следующего примера:
#!/usr/bin/python
import cv2
import numpy as np
if __name__ == "__main__":
img = np.array([
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255],
[255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255],
[255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255],
[255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255],
[255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]
], dtype=np.uint8)
res1 = cv2.connectedComponents(img)
print(res1)
cv2.connectedComponents(img) # < here it is crashing
print("done")
При его выполнении я получаю следующий вывод:
(2, array([[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1],
[1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1],
[1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1],
[1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1],
[1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]], dtype=int32))
Segmentation fault
Особенно странная вещь: когда я удаляю print(res1)
, он достигает конца (печать «сделано») без ошибок.
Также при уменьшении размера изображения ошибки не возникает.
Это происходит на Raspberry Pi с OpenCV 3.3.0.
Я не могу воспроизвести ошибку на своем ноутбуке (Ubuntu 16.04, OpenCV 3.3.1).
Это (может быть, известно?) Ошибка или я что-то не так делаю?