可以使用OpenCV定义的宏来提取象素值
假设灰度图像image,存取其i行j列的象素可以这样:CV_IMAGE_ELEM(image, uchar,y, x)
如果是彩色图像就是
CV_IMAGE_ELEM(image, uchar,y, 3*x)
CV_IMAGE_ELEM(image, uchar,y, 3*x+1)
CV_IMAGE_ELEM(image, uchar,y, 3*x+2)

CV_IMAGE_ELEM是一个宏,

#define CV_IMAGE_ELEM( image, elemtype, row, col ) \
(((elemtype*)((image)->imageData + (image)->widthStep*(row)))[(col)])

#define CV_MAT_ELEM( mat, elemtype, row, col ) \
(*(elemtype*)CV_MAT_ELEM_PTR_FAST( mat, row, col, sizeof(elemtype)))

呵呵,我一直把它当一个函数用,其实本质也没有什么区别的

但要想正确的得到图像的坐标为(x,y)点的像素值,是应该这样写CV_IMAGE_ELEM(Image, uchar, y, x)

要注意像素点的坐标xy和行列值的顺序是相反的(可以仔细思考为什么)

我刚开始一直写成CV_IMAGE_ELEM(Image, uchar, x, y),结果有时候就造成了访问image越界,从而报错,花了好长时间才捣鼓出来,

不过将IMAGE的数据按照原来的样子复制到mat中可以这么写:
CV_IMAGE_ELEM(pImage, uchar, i, j) = CV_MAT_ELEM(*mat, uchar, i, j)

不用改变顺序

总之,当应用这个宏是如果老报错,就试试换个顺序,或者检查访问的地址是否越界

最新文章

  1. 精选30道Java笔试题解答
  2. iOS中iconfont(图标字体)的基本使用
  3. Oracle10g下载地址--多平台下的32位和64位
  4. javascript中split字符串分割函数
  5. linux watchdog demo hacking
  6. wcf service library
  7. 迷宫 (BFS)
  8. docker private registry使用
  9. 使用 PyQt 转换网页到 PDF(使用QtWebKit加载完毕后,打印整个窗口就行了,真简单!)
  10. sql server显示某一列中有重复值的行
  11. Python/零起点(一、数字及元组)
  12. img标签与span一起使用不在同一条线上
  13. Ruby on Rails 开发笔记
  14. AES加解密程序的实现
  15. C++ Arithmetic Exception
  16. 最短路之spfa系列
  17. Squares - poj 2002(hash)
  18. [面试时]我是如何讲清楚TCP/IP是如何实现可靠传输的 转
  19. [HAOI2007]理想的正方形 st表 || 单调队列
  20. Spark MLlib框架详解

热门文章

  1. JSP中的Cookie
  2. div clear清除浮动产生的影响 被受影响的div加上清除浮动后 不会填充前一个div浮动后空出的位置
  3. 11大精选Android自学网站
  4. BZOJ4544 椭圆上的整点(数论)
  5. sql如何先排序再去重
  6. redux的基本概念
  7. Math.abs为Integer.Min_VALUE返回错误的值
  8. deploy a ec2 and join into domain with terraform
  9. offset--BUG
  10. nginx+webpy+uswgi+jwplayer组合搭建流媒体服务器