开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 483|回复: 6
打印 上一主题 下一主题
收起左侧

[C#] c#大漠ai返回图片的数据指针,如何转换

[复制链接]
结帖率:99% (509/514)
跳转到指定楼层
楼主
发表于 2024-7-4 22:26:32 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式   重庆市重庆市
14精币
[C#] 纯文本查看 复制代码
//保存到本地,再读取到pictureBox有延迟
//int retSaveFile = dm.AiYoloDetectObjectsToFile(0, 0, 2000, 2000, (float)0.5, (float)0.45, "1.bmp", 0);
//返回指针DataBmp
int ret = dm.AiYoloDetectObjectsToDataBmp(0, 0, 2000, 2000, (float)0.5, (float)0.45, out int data, out int size, 0);
Trace.WriteLine("ret:" + ret);
Trace.WriteLine("size:" + size);
unsafe
                                {
                                int x1 = 0, y1 = 0, x2 = 100, y2 = 100;

                                // 将 void* 类型的数据指针转换为 IntPtr
                                IntPtr bmpDataPtr = new IntPtr(data);

                                // 创建 Bitmap 对象
                                Bitmap bmp = new Bitmap(x2 - x1, y2 - y1, PixelFormat.Format24bppRgb);

                                // 检查 Bitmap 对象的有效性
                                if (bmp == null)
                                        {
                                        Console.WriteLine("无法创建位图对象.");
                                        return;
                                        }

                                // 保存图片到临时文件
                                string tempFilePath = System.IO.Path.GetTempFileName();
                                bmp.Save(tempFilePath);

                                // 获取文件信息
                                FileInfo fileInfo = new FileInfo(tempFilePath);
                                long fileSizeBytes = fileInfo.Length;

                                Trace.WriteLine($"图片占用磁盘空间为: {fileSizeBytes} 字节");

                                // 删除临时文件
                                File.Delete(tempFilePath);

                                pictureBox2.Image = bmp;
                                }



--------------------------
请问 AiYoloDetectObjectsToDataBmp 中返回的 data 变参指针:如何加载到 pictureBox2.Image 中,上面是我问了gpt后胡乱写的,pictureBox2里面是黑的,没弄对.
看了一天教程,很懵,还是来这里求助,请老师们指点.谢谢!
--------------------------
输出:
ret:1
size:752430
图片占用磁盘空间为: 159 字节
大象,0.709,49,302,68,74|大象,0.591,246,326,60,60
x:49,y:302

--------------------------
问题相关截图:




[Visual Basic .NET] 纯文本查看 复制代码
函数简介:

需要先加载Ai模块. 在指定范围内检测对象,把结果输出到BMP图像数据.用于二次开发.

函数原型:

long AiYoloDetectObjectsToDataBmp(x1, y1, x2, y2,prob,iou,data,size,mode)

参数定义:

x1 整形数:区域的左上X坐标

y1 整形数:区域的左上Y坐标

x2 整形数:区域的右下X坐标

y2 整形数:区域的右下Y坐标

prob双精度浮点数: 置信度,也可以认为是相似度. 超过这个prob的对象才会被检测

iou 双精度浮点数: 用于对多个检测框进行合并.  越大越不容易合并(很多框重叠). 越小越容易合并(可能会把正常的框也给合并). 所以这个值一般建议0.4-0.6之间. 
               可以在Yolo综合工具里进行测试.

data 变参指针:返回图片的数据指针

size 变参指针:返回图片的数据长度

mode 整形数: 0表示绘制的文字信息里包含置信度. 1表示不包含. 

返回值:

整形数:
0 : 失败
1 : 成功







以下是在e语言中的示例:
  
变量名类 型静态数组备 注
data整数型 
size整数型 
dm.数值方法 (“AiYoloDetectObjectsToDataBmp”, 0, 0, 100, 200,0.5,0.45, data, size,0)
图片框1.图片 = 指针到字节集 (data, size)



回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
沙发
发表于 2024-7-4 23:17:47 | 只看该作者   云南省昆明市
66666666666666666666666666
回复

使用道具 举报

结帖率:99% (509/514)

签到天数: 14 天

板凳
 楼主| 发表于 2024-7-5 09:45:39 | 只看该作者   重庆市重庆市
已解决,参考了其他读取指针写法,如 GetScreenDataBmp

但是,依旧和读取本地图片一样,存在同意的显示延迟,感觉应该用其他思路解决才行

[C#] 纯文本查看 复制代码
                                                //读取指针到数组
                                                //将指针IntPtr ptr指向的内容拷贝到数组genePic2
                                                //short[] genePic2 = new short[(int)size];
                                                byte[] genePic2 = new byte[(int)size];
                                                IntPtr ptr = new IntPtr((int)data);
                                                for (int ii = 0; ii < (int)size; ii++)
                                                        {
                                                        //genePic2 = Marshal.ReadInt16(ptr + 2 * i);//读取指针指向的内容
                                                        //genePic2 = Marshal.ReadInt32();
                                                        genePic2[ii] = Marshal.ReadByte(ptr + 1 * ii);
                                                        }

                                                // 将 byte[] 加载到 PictureBox 中
                                                LoadByteArrayToPictureBox(genePic2);

        private void LoadByteArrayToPictureBox(byte[] imageData)
                {
                try
                        {
                        using (MemoryStream ms = new MemoryStream(imageData))
                                {
                                // 将 MemoryStream 转换为 Image 对象
                                System.Drawing.Image image = System.Drawing.Image.FromStream(ms);

                                // 将 Image 对象分配给 PictureBox 的 Image 属性
                                pictureBox2.Image = image;
                                }
                        }
                catch (Exception ex)
                        {
                        MessageBox.Show($"加载图片时发生错误: {ex.Message}");
                        }
                }

回复

使用道具 举报

结帖率:99% (509/514)

签到天数: 14 天

地板
 楼主| 发表于 2024-7-5 10:05:42 | 只看该作者   重庆市重庆市
一个AiYoloDetectObjectsToDataBmp命令,耗时200ms,是这个原因造成画面不同步的吗? 是否有其他解决思路?


回复

使用道具 举报

结帖率:89% (8/9)

签到天数: 12 天

地下
发表于 2024-7-5 11:23:59 | 只看该作者   广东省东莞市
易语言没延迟吗?
回复

使用道具 举报

6
发表于 2024-12-3 20:28:19 | 只看该作者   天津市天津市
666666666666666666666
回复

使用道具 举报

签到天数: 1 天

7
发表于 2025-3-29 10:59:17 | 只看该作者   河北省保定市
经典源码
回复

使用道具 举报

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

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:[email protected]
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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