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





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值