C++ 图像RGB直方图特征提取
来源:互联网 发布:vb冒泡排序法 编辑:程序博客网 时间:2024/05/18 08:42
int ImageDeal::imgRGBHist( std::vector<float> &features, IplImage* src, int R_bins, int G_bins, int B_bins ){ IplImage* r_plane = cvCreateImage( cvGetSize(src), 8, 1 ); IplImage* g_plane = cvCreateImage( cvGetSize(src), 8, 1 ); IplImage* b_plane = cvCreateImage( cvGetSize(src), 8, 1 ); IplImage* planes[] = { r_plane, g_plane, b_plane }; int hist_size[] = {R_bins, G_bins, B_bins}; //特征维数:R_bins× G_bins× B_bins float r_ranges[] = { 0, 255 }; float g_ranges[] = { 0, 255 }; float b_ranges[] = { 0, 255 }; float* ranges[] = { r_ranges, g_ranges, b_ranges }; cvCvtPixToPlane( src, r_plane, g_plane, b_plane, 0 ); CvHistogram * hist = cvCreateHist( 3, hist_size, CV_HIST_ARRAY, ranges, 1 ); cvClearHist(hist); cvCalcHist( planes, hist, 0, 0 ); features.clear(); for(int r = 0; r < R_bins; r++) { for(int g = 0; g < G_bins; g++) { for(int b = 0; b < B_bins; b++) { int i = r * G_bins * B_bins + g * B_bins + b; float bin_val = cvQueryHistValue_3D( hist, r, g , b ); features.push_back(bin_val); } } } //features normalization float ymax = 1; float ymin = 0; float dMaxValue = *max_element(features.begin(),features.end()); float dMinValue = *min_element(features.begin(),features.end()); //save features for (int f = 0; f < features.size(); ++f){ features[f] = (ymax-ymin)*(features[f]-dMinValue)/(dMaxValue-dMinValue+1e-8)+ymin; } return 0;}
代码下载链接:
C++ 图像RGB直方图特征提取
0 0
- C++ 图像RGB直方图特征提取
- OpenCV提取图像RGB底层特征
- 颜色直方图特征提取
- 图像特征&特征提取
- rgb图像色彩提取
- LBP特征:图像特征提取
- 图像特征提取(颜色特征)
- 图像特征提取
- 关于图像特征提取
- 图像特征提取总结
- 关于图像特征提取
- 关于图像特征提取
- 关于图像特征提取
- 图像特征提取综述
- 图像颜色特征提取
- 图像颜色特征提取
- 图像特征提取
- 关于图像特征提取
- 使用spring mvc 4.2.x.jar ClassNotFoundException:org.springframework.web.cors.CorsConfigurationSource
- 13个小技巧帮你征服Xcode
- javascript深入理解js闭包
- oracle日志挖掘dbms_logmnr
- iOS 查看设备中的沙盒数据
- C++ 图像RGB直方图特征提取
- 解决ADB server didn't ACK(亲测)
- 如何利用旋转矩阵得到四元数
- Generating Artifacts问题解决汇总
- springmvc 处理模型数据
- rsync远程同步配置与使用
- android6.0(M) 验证权限 常用工具类一枚
- 给Xcode加点料
- redis 基本命令学习二(sets、sorted sets)