opencv:'BYTE' was not declared in this scope

今天在改进霍夫算法时遇到的问题:

对一张图片不用opencv自带的霍夫函数,自己改写时用的是位图,但遇到一个问题。

这是原图:

IplImage *src = cvLoadImage("123.jpg", 0);
 
  
IplImage格式的
后面的数组处理时用的是 
BYTE *pImg
//pImg ----待检测图片指针 

问题是
C++中有byte类型吗(显然是没有),Qt中定义的类型也没有byte类型
而且 
src->imageData;
或者
src->imageDataOrigin
返回的都是 char 类型的数据
如果一般出现以上的问题:解决方法如下:
 
  
 
  

window下C++编程转到linux系统下,若error: ‘BYTE’ was not declared in this scope:

定义字节符:typedef unsigned char BYTE;

 

error: ‘LONGLONG’ does not name a type

定义字节符:typedef int64_t LONGLONG;

回到上面的问题:返回的是一个char类型的数据,现在要转为一个uchar的

已知:

char 是有符号的
 unsigned char 是无符号的,里面全是正数 
两者都作为字符用的话是没有区别的,
但当整数用时有区别: 
char 整数范围为-128到127( 0x80__0x7F), 而unsigned char 整数范围为0到255( 0__0xFF ) 有时候想把整数数值限在255范围内,
也用unsigned char,这个类型在嵌入式用的多
 
  
所以,解决的方法可以是:
先得到一个char的数
然后判断一下正负
如果是正的。就 加128 得到对应的uchar的数值
如果是负的,就取绝对值,再加128.
 
  
目前还没有想到更好的方法,欢迎讨论
                                     2015.5.6   22.48
/************************************************************************************************************************************************/
错了,修改一下,
char转为uchar:应该是-128-----127直接加上128即可。
上面的方法应该不对
  
2015.5.7.
10.20





你可能感兴趣的:(opencv)