Python Flask:在尝试比较图像时,OpenCV库出错,产生HTTP代码502 Bad Gateway。

0

【以下的问题经过翻译处理】 你好,

我在使用 Python OpenCV 库时遇到问题,在 AWS Lightsail 容器实例上运行。

一些基本信息:

  • 运行在 python:3.7 Docker 镜像上。
  • Python Flash应用
  • AWS Lightsail 容器实例
  • 使用以下第三方库:链接
  • 对 OpenCV 使用 opencv-contrib-python-headless==4.5.4.60。
  • 错误图片:链接

当尝试比较两个图像时,我收到 502 Bad Gateway 的 HTTP 状态代码,这很奇怪。 似乎在我的本地 Windows 机器上完美运行,但在这个 Linux 映像上不行。

from cv2 import cv2 import logging logger = logging.getLogger()
def compare_two_images(image_to_compare_file, image_to_compare_against_file): 
# Image imports 
# Features 
logger.warning("image_to_compare_file " + image_to_compare_file)
logger.warning("image_to_compare_against_file " + image_to_compare_against_file)

筛选 = cv2.SIFT_create()
logger.warning("SIFT 创建" + str(sift 为 None))

# 查询图像
img1 = cv2.imread(image_to_compare_file, cv2.IMREAD_GRAYSCALE)
logger.warning("IMG1 read created" + str(img1 is None))

# 使用 SIFT 查找关键点和描述符
kp1, desc1 = sift.detectAndCompute(img1, None)
logger.warning("检测并计算" + str(kp1 为 None) + " " + str(desc1 为 None))
    
img2 = cv2.imread(image_to_compare_against_file, cv2.IMREAD_GRAYSCALE)
logger.warning("IMG2 读取已创建" + str(img2 为 None))

kp2,desc2 = sift.detectAndCompute(img2,无)
logger.warning("检测并计算" + str(kp2 == None) + " " + str(desc2 is None))

# 使用默认参数的 BFMatcher
bf = cv2.BFMatcher()
匹配 = bf.knnMatch(desc1, desc2, k=2)

# 应用比率测试
好= []
对于 m, n 匹配:
    如果 m.distance < 0.55 * n.distance:
        good.append([m])`

kp1, desc1 = sift.detectAndCompute(img1, None) 上崩溃

并产生 502 Bad Gateway。 然后,在我的 Python Flask 应用程序中的其他一些endpoint上,多次产生503 服务暂时不可用。 在那之后,我可以看到图像被删除了。

profile picture
专家
已提问 8 个月前101 查看次数
1 回答
0

【以下的回答经过翻译处理】 确定错误5XX是源自负载均衡器还是实例非常相关:

https://lightsail.aws.amazon.com/ls/docs/en_us/articles/understanding-instance-health-metrics-in-amazon-lightsail#understanding-load-balancer-metrics

为了了解更多的信息,我建议尝试以下操作:

1.确保相关的“flask”环境标识已设置为输出调试级别日志:

应该能够看到错误的回溯,如下所示:

https://flask.palletsprojects.com/en/2.0.x/debugging

还可以像这里所解释的那样查看Lightsail中记录的日志:

https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-viewing-container-service-container-logs

2.作为测试,使用更多的RAM来运行的应用程序,以查看是否存在内存不足错误导致应用程序崩溃。

https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-viewing-container-services-metrics

3.调查容器报告的健康状态。容器服务可能有特定的健康要求进行监控(例如响应时间)。如果该指标确定服务不健康,我期望它将为您重新启动服务。您可以在此处找到更多有关健康监控选项的信息:

https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-container-services-deployments

profile picture
专家
已回答 8 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则