关于OpenCV中利用函数cvConvert实现图像数据类型转换(8U->16S)
来源:互联网 发布:redis存储json数据 编辑:程序博客网 时间:2024/06/05 00:44
最近在做毕设,关于矩形NAM表示方法的。刚刚接触opencv,一些函数用得比较生疏。
解决灰度图像RNAM算法时要标记已编码的矩形范围,我的方法是将其标记为-1,即处理完一个矩形,即用cvSubS(v+1) “v表示原像素值”将矩形框中的像素减到-1。但由于直接读入的图像数据均为8位无符号整型,所以需将其转换为16位有符号整型,这样才能表示负数。
利用以下代码直接用函数cvConvert将原图像格式由8位无符号整型转换为16位有符号整型时,发现转换后的图像矩阵按照原来输出图像矩阵数据的方法输出的数据与源图像不一样。
解决灰度图像RNAM算法时要标记已编码的矩形范围,我的方法是将其标记为-1,即处理完一个矩形,即用cvSubS(v+1) “v表示原像素值”将矩形框中的像素减到-1。但由于直接读入的图像数据均为8位无符号整型,所以需将其转换为16位有符号整型,这样才能表示负数。
利用以下代码直接用函数cvConvert将原图像格式由8位无符号整型转换为16位有符号整型时,发现转换后的图像矩阵按照原来输出图像矩阵数据的方法输出的数据与源图像不一样。
IplImage* img = cvLoadImage(argv[1], 0);IplImage* image = cvCreateImage(cvSize(img->width, img->height), IPL_DEPTH_16S, 1);cvConvertScale(img, image);for (int y = 0; y < image->height; ++y){uchar* ptr = (uchar*)(image->imageData + y*image->widthStep);for (int x =0; x < image->width; ++x){cout << int(ptr[x]) << '\t';// cout << bitset<16>(ptr[x]) << '\t';}cout << endl;}
后将"uchar* ptr = (uchar*)(image->imageData + y*image->widthStep);"中的uchar(8位)改为short int(16位)后数据正确。与ptr的类型有关。
以后遇到类似问题要考虑到存储数据的类型所占的位数问题。
- 关于OpenCV中利用函数cvConvert实现图像数据类型转换(8U->16S)
- matlab中图像数据类型及转换函数
- OpenCV中对图像数据进行64F和8U转换的方法
- opencv中数据类型转换
- Opencv中访问图像数据类型
- 利用OpenCV的inpaint函数实现图像的污点修复
- Android Jni 利用OpenCV transpose()函数实现图像转置
- 图像数据类型及转换函数
- 图像数据类型及转换函数
- 图像数据类型的转换 matlab opencv
- Halcon 与 OpenCV 图像数据类型转换
- Halcon 与 OpenCV 图像数据类型转换
- matlab中图像数据类型转换
- matlab中图像数据类型转换
- matlab中图像数据类型转换
- matlab中图像数据类型转换
- 利用OpenCV修改图像大小,转换图像格式
- OpenCV中利用cvConvertScale()将图像的数据类型由u8转化为64f...
- Ubuntu下PATH设置
- 医院健康体检系统
- android发送消息正确方式
- wTL
- android Activity中启动另一应用程序的方法,无需得到类名
- 关于OpenCV中利用函数cvConvert实现图像数据类型转换(8U->16S)
- GeekOs系统调用
- Linux设备模型分析之kset
- 每日一练 Lucene3.5 建立索引
- (Hanoi)汉诺塔java实现程序
- Android系列教程之五:Activity的生命周期
- 求大神路过指导ZOJ3597 Hit the Target!
- 第十周任务一
- ubuntu每天定时关机