Tôi có một chức năng trong dự án của tôi mà có thể làm khâu, các chức năng đang làm việc tốt, nó rất đơn giản:opencv khâu với dll miễn phí
Mat output(m_Img, true), pano; // a panaoramic image
bool try_use_gpu = true;
Stitcher iSticher = Stitcher::createDefault(try_use_gpu);
// Set Feature finder to be ORB
iSticher.setFeaturesFinder(new detail::OrbFeaturesFinder());
try{
Stitcher::Status status = iSticher.stitch(Imgs, pano);
if (status != Stitcher::OK)
{
LOG("Error stitching - Code: %d", int(status));
return -1;
}
}
catch(exception e)
{
LOG("Cannot Stitch Image,%s",e.what());
}
Mã này hoạt động tốt và tôi đã có thể ghép ảnh khá tốt. Vấn đề duy nhất là khi tôi muốn triển khai mã của tôi, tôi nhận ra rằng tôi phải sử dụng dll không miễn phí. Nếu không, .exe
sẽ không chạy. Câu hỏi của tôi là: để sử dụng Stitcher
lớp từ opencv, điều đó có nghĩa là bạn phải trả tiền, ngay cả khi bạn không sử dụng các thuật toán SURF
hoặc SIFT
? Có cách nào để làm điều đó mà không sử dụng "dll không miễn phí"? Lưu ý: Tôi đang sử dụng opencv 2.4.2
. Chỉnh sửa: Tôi cũng đã thử nghiệm nó với OpenCV 2.4.11
Bạn không sử dụng DLL miễn phí nào? –
@KyryloPolezhaiev, theo như tôi biết chỉ có một non-free.dll. Tuy nhiên, nếu bạn hỏi về các chức năng không tự do, tôi không sử dụng bất kỳ chức năng phi ngoại tuyến nào, nó chỉ là mã ở đây trong câu hỏi ... – Samer
Dường như bạn không cần triển khai 'opencv_nonfree.dll',' opencv_stitching. dll' thay thế. Bạn đã sử dụng SIFT hoặc SURF ở nơi khác? Hay bạn đã liên kết với 'opencv_nonfree.lib' một cách rõ ràng trong dự án của bạn? – herohuyongtao