OpenCV中文网站

 找回密码
 立即注册
搜索
热搜: 安装 配置
查看: 5722|回复: 6

unsigned char型RGB如何转换为Mat类型?

[复制链接]
发表于 2018-11-5 11:32:01 | 显示全部楼层 |阅读模式
用的大恒的GV400相机,没法直接用videoCapture,必须用他们的SDK,但是获取到的图片数据没法用转换成Mat类型来处理。试了网上找到的几个方法,都没用,请教一下大家。
回复

使用道具 举报

发表于 2018-11-6 17:41:32 | 显示全部楼层
OpenCV的Mat提供了构造函数Mat (int rows, int cols, int type, void *data, size_t step=AUTO_STEP),参数分别为行、列、类型、任意类型数组,最后一个可以不用管,类型为CV_8UC1、CV_8UC2等等,其中8为一个元素的位数,U为无符号,C1为一个通道,如果图片数据位unsigned char型,且为RGB三个通道,则类型为CV_8UC3;后边data为图片数据指针,必须为连续的一维数组,且按照B、G、R的通道方式排列。
但是这种构造方式需要自己管理内存。
回复 支持 反对

使用道具 举报

发表于 2018-11-7 23:12:47 | 显示全部楼层
这个问题,看看大恒有无解决方案?
还有,试一下
《基于opencv和mfc的摄像头采集代码(GOMFCTemplate2)持续更新》
https://www.cnblogs.com/jsxyhelu/p/GOMFCTemplate2.html
我这个是基于dshow的,看能否获取。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-30 16:14:44 | 显示全部楼层
本帖最后由 放开那个女孩 于 2018-11-30 16:52 编辑
jsxyheu2014 发表于 2018-11-7 23:12
这个问题,看看大恒有无解决方案?
还有,试一下
《基于opencv和mfc的摄像头采集代码(GOMFCTemplate2)持续 ...

感谢回复, 找到了一种方法可以转换
IplImage * src = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 1);
src->imageData = (char *)pRaw8Buffer;
Mat seg_spine(src, 0);
imshow("img", seg_spine);

而上面那位哥们说的
Mat img2(width, height, CV_8UC1, (uchar*)pRaw8Buffer);
imshow("img2", img2);
这种方式转换出来图片显示是异常的。
不知道是怎么原因。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-30 16:22:34 | 显示全部楼层
本帖最后由 放开那个女孩 于 2018-11-30 16:52 编辑
裸奔丶小馒头 发表于 2018-11-6 17:41
OpenCV的Mat提供了构造函数Mat (int rows, int cols, int type, void *data, size_t step=AUTO_STEP),参数 ...

感谢回复, 找到了一种方法可以转换
IplImage * src = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 1);
src->imageData = (char *)pRaw8Buffer;
Mat seg_spine(src, 0);
imshow("img", seg_spine);

哥们你说的这个方法
Mat img2(width, height, CV_8UC1, (uchar*)pRaw8Buffer);
imshow("img2", img2);
这种方式转换出来图片显示是异常的。
不知道是怎么原因。
回复 支持 反对

使用道具 举报

发表于 2018-12-3 22:41:20 | 显示全部楼层
iplimage这种写法已经淘汰了,大恒获得是什么格式图片?
回复 支持 反对

使用道具 举报

发表于 2018-12-6 16:39:26 | 显示全部楼层
放开那个女孩 发表于 2018-11-30 16:22
感谢回复, 找到了一种方法可以转换
IplImage * src = cvCreateImage(cvSize(width, height), IPL_DEPTH_ ...

Mat img2(width, height, CV_8UC1, (uchar*)pRaw8Buffer);
这里的第一个参数应该是矩阵行数,也就是图像高度height的,哥们你写反了吧,我用MNIST数据集中的灰度像素直接填充是没问题的。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|OpenCV中文网站

GMT+8, 2024-4-26 03:56 , Processed in 0.009423 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表