Read png image with cv2.imread form Opencv3 in Python3.7.1 and no pixel at all with black window
I have two png images, one is outputed by python library pillow to png, converted from svg font image, another is this one read by and re-saved from windows 10’s paint program to png. Strangely, I use opencv3 cv2.imread function to read these images, one is not OK with only black window, another is OK. How to read these pngs both correctly? CODE:
import cv2 image_file_path = r"" image = cv2.imread(image_file_path, cv2.IMREAD_ANYDEPTH) if(! os.path.exists(image_file_path)): print('NOT EXIST! = ' + image_file_path) cv2.namedWindow('image', cv2.WINDOW_NORMAL) cv2.imshow("image", image) cv2.waitKey()
2 Answers 2
The first image is in 4-channel RGBA format with a completely pointless, fully opaque, alpha channel which you can ignore.
The second image is in 2-channel Grey+Alpha format where all the pixels are pure solid black and the shapes are defined only in the alpha channel.
- discard the last channel of the first image, which you can do by using cv2.IMREAD_COLOR
- discard all except the last channel of the second image, which you can do like this: im = cv2.imread(‘2.png’,cv2.IMREAD_UNCHANGED)[. -1]
I obtained the information above by using ImageMagick which is included in most Linux distros and is available on macOS and Windows.
The command I used in Terminal is:
magick identify -verbose 2.png
Sample Output
Image: 2.png Format: PNG (Portable Network Graphics) Mime type: image/png Class: DirectClass Geometry: 1040x1533+0+0 Units: Undefined Colorspace: Gray Type: Bilevel Base type: Undefined Endianess: Undefined Depth: 8-bit Channel depth: Gray: 1-bit
I have annotated with arrows and notes on the right above.
Note 1: This tells me the image is greyscale + alpha
Note 2: This tells me all the greyscale pixels are black, since the max is zero and the min is zero
Note 3: This tells me that there are some fully transparent pixels, and some fully opaque pixels
OPENCV PYTHON IMREAD НЕ РАБОТАЕТ
OpenCV - это библиотека компьютерного зрения, которую можно использовать с Python. Модуль OpenCV Python, который загружает изображения, называется imread.
Однако, если при использовании imread возникает проблема, необходимо проверить несколько вещей. Во-первых, убедитесь, что вы правильно импортировали библиотеку OpenCV в свой скрипт Python. Если это не исправляет проблему, возможно, проблема заключается в указании пути к файлу изображения.
Кроме того, если файл изображения находится в другом каталоге, отличном от рабочего каталога Python, вам может потребоваться указать полный путь к файлу. Ниже приведен пример использования imread:
import cv2
img = cv2.imread('image.jpg')
cv2.imshow('Image', img)
cv2.waitKey(0)
Если не удается загрузить изображение с помощью imread, возможно, оно не соответствует поддерживаемым форматам файла библиотеки OpenCV. Проверьте, поддерживается ли формат файла вашего изображения OpenCV.
Кроме того, у вас может отсутствовать необходимый кодек для декодирования файла изображения. В этом случае вам необходимо установить дополнительные кодеки для OpenCV.
solving problem of reading image in python opencv حل مشكلة قراءة الصورة في البايثون
imread( ) \u0026 imwrite( ) FUNCTIONS IN OPENCV (PYHTON LIBRARY) -- COMPUTER VISION LIBRARY IN PYTHON
Python - OpenCV - PyCharm cannot find cv2 references - Urdu - Hindi
OpenCV Python Tutorial For Beginners 3 - How to Read, Write, Show Images in OpenCV
How to image Read \u0026 Show Display in Opencv Python - Function imread() imshow()
[Mì Python] Bài 3. Python và OpenCVOpenCV - Sửa Lỗi Pycharm Không Hiện Gợi Ý Code OpenCV Thành Công 100%
Tutorial -2 Image representation, pygame.ru() and pygame.rue()
OpenCV Part 2 - Image processing in Python -Open CV2 - imshow() not working in kaggle
- Python расширенный алгоритм евклида
- Python на вход вашей программе строка содержащая число сократите его указанным образом до 1 цифры
- Python anywhere как загрузить бота
- Как обновить pip в python pycharm
- Плюс минус задача python
- Gil в python
- Поле ввода python tkinter
- Python для хакеров нетривиальные задачи и проекты
- Click selenium python не работает
- Кружок выход за границы python
- Python создать новый список из старого
- Компьютерное зрение на python
- Could not convert string to float python ошибка
- Python как получить html код страницы
- Обход множества python
OpenCV Python не открывает изображения с помощью imread()
Я не совсем уверен, почему это происходит, но я нахожусь в процессе создания программы, и у меня возникают тонны проблем, пытающихся заставить opencv открывать изображения с помощью imread. Я продолжаю получать сообщения о том, что изображение имеет ширину 0px и высоту 0px. Это не имеет особого смысла для меня, поэтому я искал здесь, и я также не получаю никаких ответов от SO.
Я сделал около 20 снимков, и все они используют одно устройство. Вероятно, 8 из них действительно открываются и работают правильно, остальные нет. Они также не повреждены, потому что они открываются в других программах. Я трижды проверил пути, и они используют полные пути.
У кого-нибудь еще есть такие проблемы? Все мои файлы являются.jpgs, и я не вижу никаких проблем с моей стороны. Это ошибка или я что-то не так делаю?
Вот фрагмент кода, который я использую, который воспроизводит ошибку на моем конце.
imgloc = "F:\Kyle\Desktop\Coinjar\Test images\ten.png" img = cv2.imread(imgloc) cv2.imshow('img',img)
Когда я изменяю файл, я просто изменяю имя самого файла, весь путь не меняется, он просто отказывается принимать некоторые из моих изображений, которые по сути совпадают.
Я получаю эту ошибку из более поздней части кода, где я пытаюсь использовать img.shape
Traceback (most recent call last): File "F:\Kyle\Desktop\Coinjar\CoinJar Test2.py", line 14, in height, width, depth = img.shape AttributeError: 'NoneType' object has no attribute 'shape'
и я получаю эту ошибку, когда я пытаюсь показать окно из фрагмента кода выше.
Traceback (most recent call last): File "F:\Kyle\Desktop\Coinjar\CoinJar Test2.py", line 11, in cv2.imshow('img',img) error: ..\..\..\..\opencv\modules\highgui\src\window.cpp:261: error: (-215) size.width>0 && size.height>0 in function cv::imshow