您好,登錄后才能下訂單哦!
這篇文章主要講解了“如何利用OpenCV實現基于深度學習的超分辨率處理”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“如何利用OpenCV實現基于深度學習的超分辨率處理”吧!
OpenCV是一個非常強大的計算機視覺處理的工具庫。很多小伙伴在入門圖像處理時都需要學習OpenCV的使用。但是隨著計算機視覺技術的發展,越來越多的算法涌現出來,人們逐漸覺得OpenCV比較落后而放棄了使用OpenCV。
但是,實際上OpenCV時一個與時俱進的開源代碼庫。正在逐漸的吸收和接納最新的算法。本文我們來介紹如何使用OpenCV實現基于深度學習的圖像超分辨率(SR)。使用OpenCV的好處就是,我們不需要知道任何圖像超分辨率的相關知識,就可以使用這個代碼,并實現圖像超分辨率。
具體操作步驟:
1. 安裝OpenCV contrib模塊
OpenCV中的超分辨率功能被集成在了contrib模塊中,因此我們首先需要安裝OpenCV的擴展模塊。安裝過程可以參考【從零學習OpenCV 4】opencv_contrib擴展模塊的安裝。超分辨率被集成在dnn_superres模塊中,如果小伙伴們電腦空間有限,可以只編譯這一個模塊。
近期有小伙伴反饋自己安裝擴展模塊失敗,為了解決這個問題,小白近期在籌劃搭建一個各個版本opencv-contrib編譯完成的數據庫。各位小伙伴隨時關注我們公眾號的動態。
2. 下載訓練的模型
由于某些模型比較大,因此OpenCV代碼庫中沒有包含他們,因此我們在使用的時候需要單獨的下載經過訓練的模型。目前,僅支持4種不同的超分辨率模型,他們可以實現2倍、3倍、4倍甚至8倍的圖像方法。這些模型具體如下:
#include <opencv2/dnn_superres.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/highgui.hpp>
using namespace std;
using namespace cv;
using namespace dnn;
using namespace dnn_superres;
int main(int argc, char *argv[])
{
//Create the module's object
DnnSuperResImpl sr;
//Set the image you would like to upscale
string img_path = "image.png";
Mat img = cv::imread(img_path);
//Read the desired model
string path = "FSRCNN_x2.pb";
sr.readModel(path);
//Set the desired model and scale to get correct pre- and post-processing
sr.setModel("fsrcnn", 2);
//Upscale
Mat img_new;
sr.upsample(img, img_new);
cv::imwrite( "upscaled.png", img_new);
return 0;
}
//Read the desired modelstring path = "FSRCNN_x2.pb";sr.readModel(path);
//Set the desired model and scale to get correct pre- and post-processingsr.setModel("fsrcnn", 2);
//UpscaleMat img_new;sr.upsample(img, img_new);cv::imwrite( "upscaled.png", img_new);
import cv2
from cv2 import dnn_superres
# Create an SR object
sr = dnn_superres.DnnSuperResImpl_create()
# Read image
image = cv2.imread('./input.png')
# Read the desired model
path = "EDSR_x3.pb"
sr.readModel(path)
# Set the desired model and scale to get correct pre- and post-processing
sr.setModel("edsr", 3)
# Upscale the image
result = sr.upsample(image)
# Save the image
cv2.imwrite("./upscaled.png", result)
# Create an SR objectsr = dnn_superres.DnnSuperResImpl_create()
雙線性插值放大3倍
FSRCNN放大3倍
ESDR放大3倍
感謝各位的閱讀,以上就是“如何利用OpenCV實現基于深度學習的超分辨率處理”的內容了,經過本文的學習后,相信大家對如何利用OpenCV實現基于深度學習的超分辨率處理這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。