请问怎样从内存中读取图像并转为mat格式?

wl208208 2014-09-01 10:15:12
各位大牛好,我想从摄像头中提取每一帧进行实时处理,通过IplImage* cvQueryFrame( CvCapture* capture )来提取当前帧,保存在内存中,但是我处理算法的图片输入是mat格式的,请问如何提取内存中的图像作为mat类的输入,谢谢
...全文
2665 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
live801 2018-05-27
  • 打赏
  • 举报
回复
请问一下,java 版本的如何实现呢?谢谢
wqvbjhc 2014-09-03
  • 打赏
  • 举报
回复
IplImage 转 cv::Mat IplImage* pImg = cvLoadImage("lena.jpg"); Mat img(pImg,0); // 0是不複製影像,也就是pImg與img的data共用同個記憶體位置,header各自有
wangyubuct1 2014-09-02
  • 打赏
  • 举报
回复
OpenCV什么的不懂啊,来学习了。正在愁苦怎么旋转图像呢~
赵4老师 2014-09-02
  • 打赏
  • 举报
回复
建议楼主先编译链接调试OpenCV自带的相关例子代码.
lx624909677 2014-09-02
  • 打赏
  • 举报
回复
cv::Mat CCameraDS::QueryFrame()
{
	long evCode, size = 0;

	m_pMediaControl->Run();
	m_pMediaEvent->WaitForCompletion(INFINITE, &evCode);
 
	m_pSampleGrabber->GetCurrentBuffer(&size, NULL);

	//if the buffer size changed
	if (size != m_nBufferSize)
	{
		m_pFrame.release();

		m_nBufferSize = size;
		m_pFrame = cv::Mat(cv::Size(m_nWidth, m_nHeight), CV_8UC3);
	}

	m_pSampleGrabber->GetCurrentBuffer(&m_nBufferSize, (long*)m_pFrame.data);

	cv::Mat output;
	cv::flip(m_pFrame, output, 0);	//旋转图像
	return output;
}
frame = m_CamDS.QueryFrame();
//转换成IpImage来显示
		IplImage image;
		image = frame;
		CvvImage cvvImage;
		cvvImage.CopyOf(&image);
		cvvImage.DrawToHDC(hDC,&rect);
lx624909677 2014-09-02
  • 打赏
  • 举报
回复
用Directshow+OpenCV来做
bullest_frog 2014-09-02
  • 打赏
  • 举报
回复
谢谢@lx624909677大神,学习了!

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧