#python #python-3.x #opencv
#питон #python-3.x #opencv
Вопрос:
Я продолжаю получать сообщение об ошибке при запуске приведенного ниже кода
import cv2
import urllib3 as urllib
import requests
import numpy as np
url = "https://external-content.duckduckgo.com/iu/?u=https://wallup.net/wp-content/uploads/2016/03/10/343179-landscape-nature.jpg"
r = requests.get(url)
imgar = np.array(bytearray(r.text,'utf-8'),dtype=np.uint8)
img = cv2.imdecode(imgar,-1)
cv2.imshow('img',img)
cv2.waitKey()
Ошибка:
cv2.imshow('img',img)
cv2.error: OpenCV(4.5.1) C:UsersappveyorAppDataLocalTemp1pip-req-build-kh7iq4w7opencvmoduleshighguisrcwindow.cpp:376: error: (-215:Assertion failed) size.width>0 amp;amp; size.height>0 in function 'cv::imshow'
Эта ошибка продолжает возникать независимо от того, на что я меняю фотографию, и я не уверен, почему, спасибо
Комментарии:
1. cv2.Видеосъемка должна работать. Или загрузите файл во временную папку и откройте с помощью imread
Ответ №1:
urllib.request.urlopen()
это правильный способ загрузки мультимедиа при работе с. opecv-python
import cv2
import urllib.request
import numpy as np
url = "https://external-content.duckduckgo.com/iu/?u=https://wallup.net/wp-content/uploads/2016/03/10/343179-landscape-nature.jpg"
url_response = urllib.request.urlopen(url)
img = cv2.imdecode(np.array(bytearray(url_response.read()), dtype=np.uint8), -1)
Ответ №2:
Вы можете попробовать это:
import urllib.request
url_response = urllib.request.urlopen(url)
img_array = np.array(bytearray(url_response.read()), dtype=np.uint8)
img = cv2.imdecode(img_array, -1)
cv2.imshow('URL Image', img)
cv2.waitKey()
Альтернативный способ:
import cv2
import urllib3 as urllib
import requests
import numpy as np
import io
import PIL
url = "https://s3-us-west-2.amazonaws.com/uw-s3-cdn/wp-content/uploads/sites/6/2017/11/04133712/waterfall-750x500.jpg"
r = requests.get(url)
response = requests.get(url)
image_bytes = io.BytesIO(response.content)
img = PIL.Image.open(image_bytes)
img.show()
Комментарии:
1. Я получил второй метод для работы, спасибо 🙂