GPU编码器图像输出?

2视图(30天)
约瑟夫·里维拉
约瑟夫·里维拉 2020年3月30日
回答: Dinesh艾耶 2020年3月31日
我使用gpu编码器生成下面的函数,从resnet50_demo修改,运行yolo网络意思杰森Nano。
函数= resnet50_wrapper (im)
持续的yolov2Obj;
opencv_link_flags =“那pkg-config——cflags——libs opencv”;
coder.updateBuildInfo (“addLinkFlags”,opencv_link_flags);
如果isempty (yolov2Obj)
yolov2Obj = coder.loadDeepLearningNetwork (“C: \ \约瑟\用户桌面\ Fall_2019 \ Senior_Design \ Matlab_Tools \ yolov2_5eps_128.mat”);
结束
%通过输入
% (bboxes、分数、标签)= yolov2Obj.detect (im,“阈值”,0.5);
(bboxes、~、标签)= yolov2Obj.detect (im,“阈值”,0.5);
%注释图像中检测。
= insertObjectAnnotation (im,“矩形”、bboxes、标签);
结束
我相信没问题的代码生成功能,但显示输出图像的最佳方式是什么?我编辑自定义resnet演示的主要功能,函数返回real32_T“出”的形象,我怎么把它转换成一个垫子和openCV显示吗?这条线我想添加下面只是一个类型转换”- > oFrame”进行转换。
/ * MathWorks公司2019 * /
/ * ResNet50演示主要。铜与OpenCV接口文件读取和显示数据。* /
#包括“resnet50_wrapper.h”
#包括“main.h”
#包括“resnet50_wrapper_terminate.h”
#包括“resnet50_wrapper_initialize.h”
#包括“opencv2 / opencv.hpp”
#包括< stdio . h >
#包括< stdlib.h >
#定义IMG_WIDTH224年
#定义IMG_HEIGHT224年
#定义IMG_CH3
#定义VID_DEV_ID1
使用名称空间的简历;
使用名称空间性病;
静态空白main_resnet50_wrapper ();
/ *
*转换BGRRGB数据数据,没有这种转换的预测
*将
* /
静态空白argInit_224x224x3_real32_T (real32_T *输入,垫和im)
{
(int j = 0; < 224 * 224; j + +)
{
/ / BGR RGB
输入(2 * 224 * 224 + j] =(浮动)(im.data [j * 3 + 0]);
输入(1 * 224 * 224 + j] =(浮动)(im.data [j * 3 + 1]);
输入[0 * 224 * 224 + j] =(浮动)(im.data [j * 3 + 2]);
}
}
静态空白main_resnet50_wrapper(空白)
{
静态real32_T b [150528];
静态real32_T [150528];
垫oFrame cFrame;
/ *创建一个视频捕捉对象* /
VideoCapture帽(VID_DEV_ID);
如果(! cap.isOpened ())
{
cout < <“打不开相机”< < endl;
退出(0);
}
namedWindow (“resnet演示”,CV_WINDOW_NORMAL);
resizeWindow (“resnet演示”、1000、1000);
浮动fps = 0;
cudaEvent_t开始,停止;
cudaEventCreate(开始);
cudaEventCreate(刹车);
(1)
{
帽> > oFrame;
调整(oFrame cFrame、大小(IMG_WIDTH IMG_HEIGHT));
/ *从BGR转换到RGB * /
argInit_224x224x3_real32_T (b, cFrame);
cudaEventRecord(开始);
/ *调用resnet预测函数* /
/ / resnet50_wrapper (b);
resnet50_wrapper (b);
cudaEventRecord(停止);
cudaEventSynchronize(停止);
浮动毫秒= -1.0;
cudaEventElapsedTime(毫秒、启动、停止);
fps = fps * *。1。9 + 1000.0 /毫秒;
/ /转换- > oFrame
/ /显示显示
imshow (“Yolo演示意思”,oFrame);
如果(waitKey (1)% 256 = = 27)休息;/ / ESC键被按下时停止
}
}
int32_T主要(int32_T命令行参数个数,const char * const argv [])
{
命令行参数个数(无效);
(空白)argv;
/ * intialize调用应用程序函数* /
resnet50_wrapper_initialize ();
/ *调用resnet预测函数* /
main_resnet50_wrapper ();
/ *调用应用程序终止函数* /
resnet50_wrapper_terminate ();
返回0;
}

答案(1)

Dinesh艾耶
Dinesh艾耶 2020年3月31日
约瑟,
几件事,希望有所帮助。简历::垫是可以在不同的颜色格式存储数据。我所见过的最受欢迎的一个是BGRA。你可以通过检查确认这一点 oFrame.channels () oFrame.depth () 。所以,你的转换例程 argInit_224x224x3_real32_T 可能需要修改执行复制通过检查 im.channels () 并有可能 im.depth () 。从RGB转换到简历:垫是确切的逆操作。但试着将它转换成BGRA。
希望这个有帮助。
书中

类别

找到更多的在图像处理工具箱帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!