How to generate mex for openCV's 'imdecode' for CPU and GPU?

조회 수: 8 (최근 30일)
JAI PRAKASH
JAI PRAKASH 2019년 1월 13일
댓글: cui,xingxing 2020년 9월 26일
I want to generate mex funtion for 'imdecode'.
First for CPU and then for GPU(GPU, if possible).
I have already downloaded 'OpenCV Interface Support'. But it lacks in some libraries. E.g. mexOpenCV.m shows..
% Libraries that are not included:
% opencv_highgui, opencv_imgcodecs, opencv_videoio, opencv_cudacodec
And I think, openCV's 'imdecode' contains in "opencv_highgui, opencv_imgcodecs".
How can this libraries be added permanently in MATLAB?
and
Is it possible to avail GPU performance benefits for this particular purpose?
Thank you

답변 (2개)

Hitesh Kumar Dasika
Hitesh Kumar Dasika 2019년 1월 18일
Some libraries are not included because of dependency on other third party libraries. The functionality offered by these libraries can also be found in Image processing toolbox as well. You can make use of that.
  댓글 수: 2
JAI PRAKASH
JAI PRAKASH 2019년 1월 18일
I want to decode jpg data.
Jpg data which are in 'uint8' bits form.
In openCV imdecode is designed for this purpose. But I am searching for a function which can give better performnace than imdecode.
I searched 'MANGO' library is fastest.
Is there any way I can use mango library through MATLAB?
Hitesh Kumar Dasika
Hitesh Kumar Dasika 2019년 1월 21일
You can make use of the below mentioned MATLAB function to load a C library into MATLAB and use it.

댓글을 달려면 로그인하십시오.


Joss Knight
Joss Knight 2019년 1월 19일
You can just download and use OpenCV yourself, and link in whatever libraries you need on the compile line. This blog post gives an example; it's a bit out of date because it uses MEX instead of MEXCUDA (so now you don't need to copy across the mex options file) but it's a workflow you can follow.
  댓글 수: 2
JAI PRAKASH
JAI PRAKASH 2019년 1월 28일
How can I use nvJPEG libraries to decode image from jpeg's buffer?
e.g. nvjpegDecode(); and so on....??
I can do this easily using OpenCV lib, below is my 'imdecode.cpp'
#include "opencvmex.hpp"
#include "opencv2/imgcodecs.hpp"
#define _DO_NOT_EXPORT
#if defined(_DO_NOT_EXPORT)
#define DllExport
#else
#define DllExport __declspec(dllexport)
#endif
using namespace cv;
using namespace std;
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
cv::Ptr<cv::Mat> rawData = ocvMxArrayToImage_uint8(prhs[0]);
Mat frame = imdecode(*rawData, -1);
plhs[0] = ocvMxArrayFromImage_uint8(frame);
}
An then compiling and calling
mexOpenCV imdecode.cpp
im=imdecode(bufferData); % bufferData is bits in uint8
cui,xingxing
cui,xingxing 2020년 9월 26일
Which static library file do I need to specify when I use ocvMxArrayToImage_uint8()? libmat.lib, libmx.lib, libmex.lib, libeng.lib? These 4 library files are not enough, these libraries are located in "C:\Program Files\MATLAB\R2020b\extern\lib\win64\microsoft", there are so many I don’t know which one to choose? thanks!
Similar questions refer to this link.

댓글을 달려면 로그인하십시오.

제품


릴리스

R2018b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by