簡體   English   中英

Opencv 超分辨率錯誤:cv2.error: OpenCV(4.7.0) /io/opencv/modules/dnn/src.net_impl.cpp:1188

[英]Opencv super resolution error: cv2.error: OpenCV(4.7.0) /io/opencv/modules/dnn/src/net_impl.cpp:1188

我想將 Sentinel2 旋渦圖像從 20m 升級到 10m,以將其與 r、g、b 和 nir 波段一起使用。 為此,我正在使用 python 代碼嘗試 opencv 超分辨率模塊:

import cv2

img = cv2.imread("img.jp2")

sr = cv2.dnn_superres.DnnSuperResImpl_create()
sr.readModel("EDSR_x2.pb")
sr.setModel("edsr", 2)
result = sr.upsample(img)
cv2.imwrite("result.jp2", result)

使用 opencv 和 opencv-contrib 4.7.0.68,這個EDSR_x2.pb文件和這個圖像

不幸的是,這一行產生了一個錯誤: result = sr.upsample(img)

錯誤:

cv2.error: OpenCV(4.7.0) /io/opencv/modules/dnn/src/net_impl.cpp:1188: error: (-2:Unspecified error) in function 'void cv::dnn::dnn4_v20221220::Net::Impl::getLayerShapesRecursively(int, cv::dnn::dnn4_v20221220::Net::Impl::LayersShapesMap&)'
>  (expected: 'total(os[i]) > 0'), where
>     'total(os[i])' is -874068992
> must be greater than
>     '0' is 0

我嘗試將 opencv 和 opencv-contrib 降級到 4.6.0.66 和 4.5.5.64,結果相同。

有誰知道為什么它不起作用或有同樣的問題?

您可以嘗試從一個最小的工作示例開始:

import cv2


img = cv2.imread("img.png")
sr = cv2.dnn_superres.DnnSuperResImpl_create()
sr.readModel("models/EDSR_x2.pb")
sr.setModel("edsr", 2)
result = sr.upsample(img)
cv2.imwrite("out.png", result)

EDSR 文件: https://github.com/Saafke/EDSR_Tensorflow/tree/master/models

OpenCV:opencv-contrib-python-4.7.0.68

輸入:

在此處輸入圖像描述

Output:

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM