1. char 与 unsignedchar

由于OpenCV的图像结构体IplImage中图像数据imageData为char*类型的。char的数据范围为[-128 127]。但是我们通常使用的图像数据应该是unsigned char,数据的范围为[0, 255]。因此这里面存在着一个小细节需要注意,那就是unsigned char与char的转换。

2. 图像的数据对齐问题

目前OpenCV中图像数据都是按照4字节对齐的,但是读入的一些数据实际上不是4字节对齐的,如果不注意,会引起很多其他的问题。

如:

IplImage *pImg = cvLoadImage("Test.bmp");

if (pImg == NULL)

{

return0;

}

int ImgWidth   =pImg->width;

int ImgHeight  =pImg->height;

int ImgChannel = pImg->nChannels;

for (int i = 0; i < ImgHeight;i++)

{

for (int j = 0; j< ImgWidth;j++)

{

for(int k = 0; k < ImgChannel;k++)

{

printf("%d  ",pImg->imageData[i * ImgWidth * ImgChannel+ j * ImgChannel+k]);

}

}

}

这里面存在两个问题:数据对齐和数据转换

数据对齐:

应该将pImg->imageData[i * ImgWidth * ImgChannel + j* ImgChannel +k]更改为printf("%d  ", pImg->imageData[i * pImg->widthStep+ j * ImgChannel+k]);

类型转换:

直接打印以%d打印char会导致打印出的结果存在很多的负数,因此需要在这里进行类型的转换为unsigned char后再进行打印输出。

unsigned char Data = pImg->imageData[i* pImg->widthStep + j * ImgChannel +k];

printf("%d  ", Data);

使用OpenCV需要注意的小细节相关推荐

  1. 圆整 round 的一点点小细节

    圆整就是获得一个浮点数最接近的整数,所谓的"四舍五入"便是指的圆整.C++ 中可以调用 std::round 来实现.看起来很简单的操作是吧,其实里面有一些小细节的. std::r ...

  2. 如何用C语言改变宏定义的大小,C语言中宏定义使用的小细节

    C语言中宏定义使用的小细节 #pragma#pragma 预处理指令详解 在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作.#p ...

  3. mysql被拖垮_说几个拖垮系统的小细节!

    本文首发于个人微信公众号<andyqian>,期待你的关注! 前言 有好几天没有更新了,期间确实比较忙些,以至于周末也没休息.在这期间,感触还是蛮深的.现在碎片化的想法等整理好后,再以文章 ...

  4. final关键字的这8个小细节,你get到几个?

    前言 大家好,我是狂聊君. 今天来聊 final 关键字,因为最近在看的几本书都讲到了 final 关键字,发现好多小细节自己都忽视了,抽空总结了一下,分享给大家. 正文 final关键字是一个常用的 ...

  5. 网站优化有什么值得注意的小细节吗?

    网站优化的目的就是让网站关键词达到首页,从而为网站带来更多的流量,促使网站达到更好的营销效果,那么对于关键词上首页有什么技巧,需要完善哪些细节呢?下面就跟大家一起分享一下. 一.挖掘更精准的关键词 对 ...

  6. ASP.NET MVC 自定义路由中几个需要注意的小细节

    本文主要记录在ASP.NET MVC自定义路由时,一个需要注意的参数设置小细节. 举例来说,就是在访问 http://localhost/Home/About/arg1/arg2/arg3 这样的自定 ...

  7. 学长的求职经验 记录【就业创业信息网、求职流程、求职小细节】

    目录 1.就业创业信息网 2.求职流程 3.求职小细节 4.毕业设计 1.就业创业信息网 郑州轻工业大学 就业创业信息网:http://job.zzuli.edu.cn/   郑州大学 就业创业信息网 ...

  8. Linux小细节-1

    Linux小细节 1.启动过程 系统启动-内核自检-linux对应程序-加载/ext/rc.local-用户密码-系统配置文件 注:shell无法实现对没有驱动的硬件控制,需要用C语言为硬件写驱动也可 ...

  9. Swift里计数相关的小细节

    Swift里对于字符串这些引入了index型,相对其他语言而言字符操作更安全了,但是问题就是一不注意搞错范围就会有各种离奇的bug. 在讲主题前,先说个小细节. Swift里非常严密的定义了一大堆字符 ...

  10. 学习Java,容易被你忽略的小细节(2)

    昨天心情真的太糟糕了,写完<学习Java,值得注意你注意的问题(1)>之后,迎来些许的支持以后就是一片片的谴责.我的主页上涌现出许许多多Java方面的牛人,谴责我水平太低,写的问题太初级. ...

最新文章

  1. shell 学习笔记(18)
  2. java query api_ElasticSearch(十二) Bool Query JAVA API
  3. 填坑利器?Redis如何弥补传统MySQL架构的不足
  4. spring mvc学习(33):原生apiSpring MVC过滤器-HiddenHttpMethodFilter
  5. mysql操作json优点和缺点_MySQL与JSON-为什么?
  6. Prince2与PMP的区别
  7. MySQL执行计划EXPLAIN详解
  8. STM32 存在字节对齐指针变量的地址都必须是4的倍数
  9. 李沐新书中文版上线,零基础也可以《动手学深度学习》| 这不是0.7版
  10. 网络安全实效性衡量指南:如何作出准确评估
  11. 基于 React.js + redux + bootstrap 的 RubyChina 示例
  12. 行情数据接口-美股版
  13. 格兰富Grundfos CM3-2 A-R-A-E-AVBE F-A-A-N
  14. 【python】之字符串格式化
  15. 也谈ibm aix jfs2
  16. log4j日志输出到web项目指定文件夹
  17. 我们到底该不该去初创公司上班?
  18. 洛谷 P2057 善意的投票
  19. 盘点:35 个 Java 代码优化魔鬼细节
  20. console.log(console.log) = ?

热门文章

  1. Andrew Ng-ML-第十五章-降维
  2. 将txt文档按行分割
  3. iOS 面试题整理(带答案)二
  4. HDU 5071 模拟
  5. 在《Windows程序设计》中出现过的消息
  6. NET中的三种Timer的区别和用法
  7. 技巧----时间优化
  8. java多线程(线程安全,线程同步)
  9. Android开发 使用HBuilder的缓存方法
  10. window.requestAnimationFrame()的使用,处理更流畅的动画效果