opencv函数CVGet2D越界问题!!!急...

passball 2012-04-11 03:50:49
把图像中的某部分存储为新的图像,用到cvGet2D取像素值,总是出现越界的问题"One of argument values is out of range().........."
调试发现是这个函数出现问题了,但是进入函数内部又出现不了什么问题.看过很多人把参数弄反了的原因,但我的不是.
发现用循环
for(i=selection.y;i<(selection.y+pImg_face->height);i++)
for(j=selection.x;j<(selection.x+pImg_face->width);j++)

{
t=cvGet2D(img,i,j);
这样就会出问题,也就是起始坐标是图像中的某个点的时侯,而如果i=0,j=0也就是从原图像存储开始位置读像素的时候就不会出错,难道这个函数里的参数必须从0开始吗??
...全文
314 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
passball 2012-04-16
  • 打赏
  • 举报
回复
看了一下,这个函数好像真的不能从0以外的值开始读取啊!好奇怪!
fengbingchun 2012-04-16
  • 打赏
  • 举报
回复
试试cvSetImageROI函数来实现你的要求
向立天 2012-04-12
  • 打赏
  • 举报
回复
单步调试一下
看看检索数据是否争取
当然主要看看循环开始和结束的位置即可
luotuo44 2012-04-12
  • 打赏
  • 举报
回复
越界了。
img->width是图像的宽。而 selection.x+pImg_face->width 的值有可能大于img->width。所以,发生越界也是不奇怪的。
libralibra 2012-04-12
  • 打赏
  • 举报
回复
矩阵存取函数提示越界肯定是下标问题了
在循环之前把selection.y+pImg_face->height和另外一个打印出来看看是不是超过了矩阵的宽高了

19,468

社区成员

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

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