opencv-计算原始LBP特征
2016-07-11 14:24
309 查看
#include <opencv2/opencv.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/nonfree/features2d.hpp> #include <opencv2/features2d/features2d.hpp> using namespace std; using namespace cv; // 计算原始LBP特征 cv::Mat OLBP(cv::Mat& srcImage) { const int nRows = srcImage.rows; const int nCols = srcImage.cols; cv::Mat resultMat(srcImage.size(), srcImage.type()); // 遍历图像,生成LBP特征 for(int y = 1; y < nRows-1; y++) { for(int x = 1; x < nCols-1; x++) { // 定义邻域 uchar neighbor[8] = {0}; neighbor[0] = srcImage.at<uchar>(y-1, x-1); neighbor[1] = srcImage.at<uchar>(y-1, x); neighbor[2] = srcImage.at<uchar>(y-1, x+1); neighbor[3] = srcImage.at<uchar>(y, x+1); neighbor[4] = srcImage.at<uchar>(y+1, x+1); neighbor[5] = srcImage.at<uchar>(y+1, x); neighbor[6] = srcImage.at<uchar>(y+1, x-1); neighbor[7] = srcImage.at<uchar>(y, x-1); // 当前图像的处理中心 uchar center = srcImage.at<uchar>(y, x); uchar temp = 0; // 计算LBP的值 for(int k = 0; k < 8; k++) { // 遍历中心点邻域 temp += (neighbor[k] >= center)* (1<<k); } resultMat.at<uchar>(y,x) = temp; } } return resultMat; } int main() { cv::Mat srcImage = cv::imread("hand1.jpg",0); if(!srcImage.data) return 0; Mat resultMat = OLBP(srcImage); cv::imshow("srcImage", srcImage); cv::imshow("resultMat", resultMat); cv::waitKey(0); return 0; }
原图
效果图
http://lib.csdn.net/base/opencv
相关文章推荐
- CentOS 6.3 中安装VirtualBOX增强工具失败:Building the main Guest Additions module[FAILED]
- oninput,onpropertychange,onchange的用法
- POJ 2186 Popular Cows
- django.db.utils.OperationalError: (1049, "Unknown database 'djangodb'")
- Keepalived + nginx实现高可用性和负载均衡
- linux下的find文件查找命令与grep文件内容查找命令
- suse linux怎么修改主机名
- Linux内核中读写文件
- 个人网站搭建—环境配置(ISS、PHP、MySQL)
- Linux下常用命令大全
- option参数
- 【命令】grep
- zabbix监控win
- UVA - 679 Dropping Balls 二叉树找规律
- Linux常见查看硬件信息指令
- Linux常见查看硬件信息指令
- Poj3484-Showstopper(二分脑洞题)
- TNS-12537 TNS-12560 TNS-00507 Linux Error: 29: Illegal seek
- 为何Apache下.htaccess不起作用,Linux、Windows详解
- Xshell个性化设置,解决Xshell遇到中文显示乱码的问题