код ошибки интегрального изображения cv2.imshow ("imageIntegral", imageIntegral) - PullRequest
0 голосов
/ 19 апреля 2019

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

import cv2  
import numpy as np  

image = cv2.imread("nancy.jpg")  
rows,cols,dims=image.shape  
sum = np.zeros((rows,cols),np.uint8)  
imageIntegral = cv2.integral(image, sum,-1) 
cv2.imshow("imageIntegral",imageIntegral) 
cv2.waitKey()

Ошибка:

cv2.imshow ("imageIntegral", imageIntegral) cv2.error: OpenCV (4.1.0) C: /projects/opencv-python/opencv/modules/highgui/src/precomp.hpp: 131:

ошибка: (-215: подтверждение не выполнено) src_depth! = CV_16F && src_depth! = CV_32S в функции 'convertToShow'

Ответы [ 2 ]

2 голосов
/ 19 апреля 2019

Справка по cv2.integral:

>>> import cv2
>>> print(cv2.__version__)
4.0.1-dev
>>> help(cv2.integral)
Help on built-in function integral:

integral(...)
    integral(src[, sum[, sdepth]]) -> sum
    .   @overload

Простая демонстрация:

import numpy as np
import cv2

img = np.uint8(np.random.random((2,2,3))*255)
dst = cv2.integral(img)

>>> print(img.shape, img.dtype)
(2, 2, 3) uint8
>>> print(dst.shape, dst.dtype)
(3, 3, 3) int32

И вам не следует использовать imshow непосредственно на изображении dst, потому что это не np.uint8. Нормализуйте его как np.uint8 (0, 255) или np.float32 (0, 1.0). Вы можете найти причину по этой ссылке: Как правильно использовать `cv2.imshow` для изображения с плавающей точкой, возвращаемого` cv2.distanceTransform`?

0 голосов
/ 17 июня 2019

Проверьте, является ли ваше изображение uint8 или нет

image = image.astype(np.uint8)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...