У меня есть камера, которая делает фотографии в двух разных качествах: "cam-lo.jpg": НИЗКОЕ качество, которое всегда следует запрашивать для получения фотографий каждые 0,2 секунды (быстрое получение фотографий дает эффект видео) и "cam -hi.jpg ": ВЫСОКОЕ качество. Если переменная расстояния меньше или равна 40, я должен запросить "http://192.164.1.39/cam-hi.jpg" и прекратить запрашивать изображение низкого качества, пока я не получу изображение высокого качества и не проведу с ним обработку. Для этой цели я пытаюсь остановить другой поток с помощью python -условия, как показано ниже:
if distance<=40:
while(True):
**cond.acquire()**
a="stop"
for i in range(5):
response=urllib.request.urlopen("http://192.164.1.39/cam-hi.jpg")
img=Image.open(BytesIO(response.read(100000)))
try:
output=str(i)+".jpg"
img.save(output)
img.save('C:/Users/hi/Desktop/savings/'+"high.jpg", 'JPEG')
except IOError:
print("cannot convert",infile)
a="finished"
print(a)
# AFTER HERE, THERE İS A LONG CODE FOR IMAGE PROCESSING THAT THE PROGRAM CANT REACH
#code for image processing.......
cond.notify()
cond.release()
def CamRequest():
global a
while(True):
cond.acquire()
if(a=="stop"):
print(a)
cond.wait()
cond.notify()
cond.release()
response=urllib.request.urlopen("http://192.164.1.39/cam-lo.jpg")
img2=Image.open(BytesIO(response.read(100000)))
img2.save('C:/Users/hi/Desktop/savings/'+"1.jpg", 'JPEG')
time.sleep(0.2)
print(a)
Это работает нормально до тех пор, пока не появится строка, в которой я беру высококачественное изображение, но не могу ничего с ним сделать при обработке смысла. потому что программа останавливается на этом (я имею в виду, что она просто "ждет"). Я также искал «asyn c запросы», но в моем случае мне нужно использовать urllib, поскольку ответ представляет собой только изображение. Было бы замечательно, если бы я мог обрабатывать высококачественные изображения после того, как я их сделал, в то время как изображения низкого качества все еще запрашиваются.