[英]Using opencv fonctions with swift4.2 on ios
我想知道如何使用swift 4.2進行高動態范圍成像的功能
我在OpenCVWrapper.h中創建函數:
+(UIImage *) hdrImaging:(NSArray *)images :(NSArray *)times;
第一個問題是如何在params中設置向量而不是數組?
在我有我的OpenCVWrapper.mm文件后,我在其中創建函數:
#import <opencv2/opencv.hpp>
#import "OpenCVWrapper.h"
#import <UIKit/UIKit.h>
#include <opencv2/photo.hpp>
#include <opencv2/highgui/ios.h>
@implementation OpenCVWrapper
+(UIImage *) hdrImaging:(/* HERE PUT VECTOR PARAMS */)images :(/* HERE PUT VECTOR PARAMS */)times{
Mat response;
//here to declare Mat it's cv::Mat response;
//I don't know how to declare and use Ptr function and what file import to use this function
Ptr<CalibrateDebevec> calibrate = createCalibrateDebevec();
calibrate->process(images, response, times);
Mat hdr;
Ptr<MergeDebevec> merge_debevec = createMergeDebevec();
merge_debevec->process(images, hdr, times, response);
Mat ldr;
Ptr<TonemapDurand> tonemap = createTonemapDurand(2.2f);
tonemap->process(hdr, ldr);
Mat fusion;
Ptr<MergeMertens> merge_mertens = createMergeMertens();
merge_mertens->process(images, fusion);
response = fusion * 255;
return MatToUIImage(response);
}
@end
有人可以幫我在m'y .mm
文件中創建這個函數,如何在函數中傳遞向量參數以及該代碼運行的文件是什么?
謝謝 !
回答你的問題: -
在輪廓的情況下,您可以使用“ std::vector<std::vector<cv::Point> >
”類型作為函數參數,或者對點使用“ std::vector<cv::Point2f>
”。 還有其他類型,但我沒有在我的項目上使用更多
確保在標題中包含“ #import<opencv2/imgcodecs/ios.h>
”
使用' cv::Mat
'而不是' Mat
'並嘗試在大多數無法識別的類型和函數之前添加'cv ::'前綴(這主要適用於😂)
以下是您的函數應該如何(經過測試並且沒有錯誤): -
+(UIImage *) hdrImaging:(std::vector<std::vector<cv::Point> >)images :(std::vector<std::vector<cv::Point> >)times{
cv::Mat response;
cv::Ptr<cv::CalibrateDebevec> calibrate = cv::createCalibrateDebevec();
calibrate->process(images, response, times);
cv::Mat hdr;
cv::Ptr<cv::MergeDebevec> merge_debevec = cv::createMergeDebevec();
merge_debevec->process(images, hdr, times, response);
cv::Mat ldr;
cv::Ptr<cv::TonemapDurand> tonemap = cv::createTonemapDurand(2.2f);
tonemap->process(hdr, ldr);
cv::Mat fusion;
cv::Ptr<cv::MergeMertens> merge_mertens = cv::createMergeMertens();
merge_mertens->process(images, fusion);
response = fusion * 255;
return MatToUIImage(response);
}
確保將參數類型更改為與您的用例匹配的內容,因為我只是舉個例子
希望這可以幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.