OpenCV打开的图片在内存中如何与TBitmap相互转换,以便用TImage显示?
解决方案 »
- [提问]Icon.LoadFromFile()后,Icon.width不正确;PopupMenu第一次弹出时,用GetMenuItemRect函数获取高度不正确。
- 关于treeview使用的问题
- 求助!为什么我创建的系统服务程序仍然可以在任务管理器中结束掉?
- 我要频繁在数据库中查找某是否有某人的存在,是打开数据表用定位的方法快还是一开始就读入到一个数组中再找快?
- 用Label标签的一点疑问----初学者弱弱的问
- 请问在delphi中写的OCX控件在VC++中能使用吗?
- Ta = class of Tb
- 这个sql语句怎么写?
- 紧急求助,现金(人民币)答谢,决不食言。
- 在delphi中如何更改数据库字段的定义?
- 计算A表某列合计值,由合计值从B表寻找匹配记录再进行计算
- 如何獲取外部程序畫面上Label的Caption值
是填充TBitmap的Pixels[x][y]吗?可以把data转成ScanLine吗?
我说的转的意思是包含数据复制,data的数据可以转换成ScanLine吗?
CV的图像数据和ScanLine数据,R、G、B还是B、G、R顺序是一致的吗?每像素行图像数据末尾不知道有没有对齐填充?
RB互换是什么意思?
如何要RB互换,CV的图像数据就不能直接拷贝给ScanLine了?RB互换有函数吗?
如果原来图像就是24位的,那要考虑对齐问题吗?
Mat src = imread("xxx");
src.convertTo(src, 某种格式);
TBitmap *bmp = new TBitmap;
bmp->Width = src.cols;
bmp->Height = src.rows;
bmp->PixelFormat = 某种格式;
memcpy(bmp->ScanLine[0], src.ptr, src.cols * src.elemSize);
没有测试,可能需要cast某些类型,也可能需要循环每次复制一行,因为不清楚Mat的内部存储结构能否和BITMAP的每行像素字节数对齐到32位匹配。