cv2.error: ошибка OpenCV (4.0.0): (-215: утверждение не выполнено) dst.data == (uchar *) dst_ptr в функции 'cvShowImage' - PullRequest
0 голосов
/ 25 января 2019
import numpy as np
import cv2

# first_method
# img = cv2.imread('sample.jpg')
# second_method
# img = np.zeros((1000, 1000, 3), np.int8) 

while True:
    cv2.imshow('sample', img)
    if cv2.waitKey(20) & 0xFF == 27:
        break
cv2.destroyAllWindows()

В приведенном выше коде я пытаюсь отобразить изображение с помощью функции imshow () opencv. Когда я пытаюсь использовать первый метод, т.е. при создании массива из образца изображения, код работает отлично, но когда я создаю свой собственный массив, я получаю следующую ошибку:

PS C:\Users\tanma\Dropbox\Coding\python\AI> python .\test_1.py
Traceback (most recent call last):
  File ".\test_1.py", line 16, in <module>
    cv2.imshow('sample', img)
cv2.error: OpenCV(4.0.0) C:\projects\opencv-python\opencv\modules\highgui\src\window_w32.cpp:1230: error: (-215:Assertion failed) dst.data == (uchar*)dst_ptr in function 'cvShowImage'

Ответы [ 2 ]

0 голосов
/ 08 мая 2019

У меня была похожая проблема при использовании OpenCV 4.0.0. Согласно this ошибка исправлена ​​в 4.0.1, поэтому вы можете просто обновить пакет opencv-python.

Мое изображение имело тип с плавающей точкой, но согласно Документация OpenCV нормально показывать такие изображения:

  • Если изображение 8-битное без знака, оно отображается как есть.
  • Если изображение имеет 16-разрядное без знака или 32-разрядное целое число, пиксели делятся на 256. То есть диапазон значений [0,255 * 256] отображается на [0,255].
  • Если изображение с 32-разрядной плавающей точкой, значения пикселей умножаются на 255. То есть диапазон значений [0,1] отображается на [0,255].
0 голосов
/ 30 января 2019

Ваш собственный массив генерирует ошибку, потому что тип данных 'int8' неверен и должен быть изменен на 'uint8', то есть 8-разрядное целое число без знака. Это связано с тем, что цвета представлены целыми числами от 0 до 255, а использование целого числа со знаком допускает только положительные целые числа вплоть до 127.

...