如何使用由指向视频数据的指针创建的 cv::Mat imgbuf

加甘迪普

我正在使用读取缓冲区读取原始视频数据

cv::Mat imgbuf(Size(640, 480), CV_8UC3, &mem[0], (640*3));

这个变量imgbuf我传递给面部检测算法,该算法检测面部并在面部周围绘制矩形。在那之后,我得到了类似的输出

输出无调整功能

我尝试使用下面的代码,在传递到人脸检测算法之前执行调整大小操作通过使用这种方法,它工作正常。但如果没有调整大小功能,我会在脸部周围获得明显的矩形输出。

输出调整大小功能

 while(1)
 {
 unsigned char *mem = (unsigned char*)mmap(NULL, page_offset + len,
 PROT_READ |PROT_WRITE, MAP_PRIVATE, fd, page_base); 
 cv::Mat imgbuf(Size(640, 480), CV_8UC3, &mem[0], (640*3));

 cv::resize(imgbuf,imgbuf,(640,480)); //Dummy function to get the right output.


 auto result = v->facedetection(imgbuf);
    for (const auto &r : result.rects) {
 cv::rectangle(imgbuf,cv::Rect{ cv::Point(r.x * imgbuf.cols, r.y * 
 imgbuf.rows),cv::Size{(int)(r.width * imgbuf.cols), (int)(r.height * 
   imgbuf.rows) } },0xff);

   }
  imshow("face-detection", imgbuf);
  waitKey(1);

任何人都可以帮助解决这个问题

MH304

测试这个方法:

unsigned char *mem = (unsigned char*)mmap(NULL, page_offset + len,
 PROT_READ |PROT_WRITE, MAP_PRIVATE, fd, page_base); 

cv::Mat imgbuf(480,640, CV_8UC3, &mem[0]);
cv::Mat img_2, img_3;
cv::resize(imgbuf,img_2,cv::Size(640,480));
img_2.copyTo(img_3);
auto result = v->facedetection(img_2);

for (const auto &r : result.rects)
{
   cv::Rect myR = cv::Rect(r.x * img_2.cols, r.y * img_2.rows, (int)(r.width * img_2.cols), 
   (int)(r.height * img_2.rows));

   cv::rectangle(img_3,myR,Scalar(0, 0, 255), 1);
}
imshow("Result", img_3);
waitKey(0);

获得有效结果后,您可以优化它并减少使用“Mat”。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

读取数据cv :: Mat

来自分类Dev

如何在vector <cv :: Mat>中找到相同的cv :: Mat

来自分类Dev

OpenCV使用cv :: Mat创建新图像

来自分类Dev

使用cv :: imdecode后,cv :: Mat外部数据未修改

来自分类Dev

如何在 python 中使用 cv::Mat?

来自分类Dev

从 UIImage 创建 cv::Mat 时出错

来自分类Dev

如何将 cv::Scalar 分配给 cv::Mat?

来自分类Dev

覆盖cv :: Mat数据的最佳方法

来自分类Dev

如何从CVPixelBufferRef转换为openCV cv :: Mat

来自分类Dev

C ++ / OpenCV-如何重塑cv :: Mat?

来自分类Dev

如何在C ++中翻转cv :: mat?

来自分类Dev

如何调整空的cv :: Mat对象

来自分类Dev

cv :: MAT如何转换为NHCW格式?

来自分类Dev

OpenCV使用步长从数组生成cv :: Mat

来自分类Dev

OpenCV使用步长从数组生成cv :: Mat

来自分类Dev

使用cv :: Mat作为带符号的值

来自分类Dev

cv :: Mat :: clone()比分配cv :: Mat :: zeros()创建的矩阵更有效吗?

来自分类Dev

使用cv :: Mat和MediaCodec在Android中编码视频

来自分类Dev

C ++ / cv :: Mat等效于使用memcpy创建IplImage

来自分类Dev

openCV cv :: mat版本

来自分类Dev

比较2 cv :: Mat

来自分类Dev

将cv :: Mat A的每个成员与cv :: Mat B合并,以创建一个结果为[a(x,y),b(x,y)]的cv :: Mat C

来自分类Dev

用动态分配的数据初始化cv :: Mat

来自分类Dev

用数据初始化cv :: Mat不起作用

来自分类Dev

我如何获得多维cv :: Mat的大小?(垫子或MatND)

来自分类Dev

如何验证rect是否在OpenCV的cv :: Mat内部?

来自分类Dev

如何将'cv :: Mat'转换为'double'?

来自分类Dev

如何在C ++中完全释放cv :: Mat的内存

来自分类Dev

如何将cv :: Mat转换为MFC CBitmap

Related 相关文章

热门标签

归档