利用OpenCV中对图像数据进行64F和8U转换的方式
在OpenCV中很多对数据的运算都需要转换为64F类型,比如伽玛变换,这个很明显要求幂的底数是double类型~而cvShowImage()又要求是U8才能显示,否则显示出来是一片空白!所以经常要进行转换,怎么做呢?看了下面的几行代码你就知道了!在OpenCV的IplImage结构体char * imageData成员的说明中,官方文档明确提示大家不能对这个指针所对应的数据直接操作,否则会带来意想不到的错误。我曾经就犯傻直接进行操作,结果造成数据类型不匹配,最后还非得去修改头文件中的char * imageData为unsigned char * imageData才解决问题,然而这种操作是极其不妥的~正确的做法是用OpenCV提供的各种函数来对图像数据就行操作!比如cvConvertScale()、Use SetData()之类的!这里我用cvConvertScale()来实现灰度图像的线性变换,程序非常简洁,而且没有任何问题!
下载地址
用户评论