日期:2014-05-17  浏览次数:20969 次

高手进!取图像指针锁入内存的问题
摄像头录像,取录像的一帧生成bitmap图像,图像中有一个椭圆形白斑。我现在已经知道了椭圆的圆心位置(x,y)长轴l和短轴s,想将这个椭圆用一个红色框框出来,并读取这部分指针锁入内存中,以便后面再分析白斑像素值的时候直接就可以从这些指针来读取,而不用重新读取整个图像,节省了很多资源和时间。之前是用矩形框来框出白斑的,用的是Rectangle结构,现在想直接框椭圆,大侠们有什么方法可以实现吗?
内存 指针

------解决方案--------------------
把你的标定数据(矩形或椭圆)数据放到另一个空间A,然后在读取新的一帧图像后,从A中读取数据,然后绘制或做其它动作。

------解决方案--------------------
既然要效率,就把这个缓存起来,而不是实时计算。
起始行 + 行数 + [起始列 + 列数]

------解决方案--------------------
bitmpalock只能锁定矩形区域。就好像你的图像文件都是矩形的,没有椭圆形的一样。
------解决方案--------------------
引用:
Quote: 引用:

bitmpalock只能锁定矩形区域。就好像你的图像文件都是矩形的,没有椭圆形的一样。
有没有其他方法可以实现椭圆形的

你锁定椭圆所在矩形区域不就完了,4个角能多锁几个像素?

鉴于你的基础如此不扎实,最好先阅读下《计算机数字图像处理》1-3章。
------解决方案--------------------
引用:
Quote: 引用:

起始行 + 行数 + [起始列 + 列数]

没看懂,什么意思?
我说的是分析处理数据的时候,指针直接定向到目标位置。
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

bitmpalock只能锁定矩形区域。就好像你的图像文件都是矩形的,没有椭圆形的一样。
有没有其他方法可以实现椭圆形的

你锁定椭圆所在矩形区域不就完了,4个角能多锁几个像素?

鉴于你的基础如此不扎实,最好先阅读下《计算机数字图像处理》1-3章。

基础是不行。。锁定矩形我们已经实现了,我想锁椭圆是因为四个角的像素对我们的项目毫无用处。项目要求频繁检测椭圆区域像素灰度值,所以才用指针定位,然后在读取像素值,还要计算亮度的平均值和整体值,如果用矩形,四个角的像素就会对这些值造成一定的误差影响,所以想尽量避免。

那点点像素不会有太多性能损失的。不用考虑了。

还是那句问你,你能做个椭圆的图片文件出来么?不能就别想了。
------解决方案--------------------
引用:
Quote: 引用:

把你的标定数据(矩形或椭圆)数据放到另一个空间A,然后在读取新的一帧图像后,从A中读取数据,然后绘制或做其它动作。
怎么样标定椭圆的数据?

椭圆可以用一个矩形来定义,如果轴是水平或垂直的,就更简单,如果是倾斜的,就需要旋转这个矩形,也就是矩形加一个旋转角度来定义。
------解决方案--------------------
引用
基础是不行。。锁定矩形我们已经实现了,我想锁椭圆是因为四个角的像素对我们的项目毫无用处。项目要求频繁检测椭圆区域像素灰度值,所以才用指针定位,然后在读取像素值,还要计算亮度的平均值和整体值,如果用矩形,四个角的像素就会对这些值造成一定的误差影响,所以想尽量避免。

指定运算的矩形区域是很简单的,而且提速很有效。椭圆来定位运算区域会有点问题,你还需要加一个IF语句判断是否执行。如果不执行的区域非常小或或者执行的代码很简单,这样的代码还可能出现减速的副作用。
如果代码简单或有效区域很大,建议使用一个黑白图来定义区域,然后运算后的值乘以这个图上的0或者1再返回