今天在改进霍夫算法时遇到的问题:
对一张图片不用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