opencv:求一幅图片的LBP纹理图(c++版本)
来源:互联网 发布:php程序员需要什么软件 编辑:程序博客网 时间:2024/05/01 15:39
感觉还是使用c++版本opencv更加方便,LBP是描述的图片的局部特征,即纹理特征,有关公式和理论网上有很多我就不再重复,直接上代码。
/* * */#include "opencv2/opencv.hpp" using namespace cv ;using namespace std ;Mat LBP(Mat src_image){ bool affiche=true; cv::Mat Image(src_image.rows, src_image.cols, CV_8UC1); //建立一个与src_image等高等宽的单通道图像Image cv::Mat lbp(src_image.rows, src_image.cols, CV_8UC1); //建立一个与src_image等高等宽的单通道图像lbp if (src_image.channels() == 3) cvtColor(src_image, Image, CV_BGR2GRAY); //LBP只能处理灰度图像,这里如果传过来的是彩色照片,要转化为灰度图 unsigned center = 0; //提取需要计算LBP值得中心点的灰度值 unsigned center_lbp = 0; //计算center处的LBP值 //计算LBP图像 for (int row = 1; row < Image.rows-1; row++) { for (int col = 1; col < Image.cols-1; col++) { center = Image.at<uchar>(row, col); center_lbp = 0; if (center <= Image.at<uchar>(row - 1, col - 1)) center_lbp += 1; if (center <= Image.at<uchar>(row - 1, col)) center_lbp += 2; if (center <= Image.at<uchar>(row - 1, col + 1)) center_lbp += 4; if (center <= Image.at<uchar>(row, col - 1)) center_lbp += 8; if (center <= Image.at<uchar>(row, col + 1)) center_lbp += 16; if (center <= Image.at<uchar>(row + 1, col - 1)) center_lbp += 32; if (center <= Image.at<uchar>(row + 1, col)) center_lbp += 64; if (center <= Image.at<uchar>(row + 1, col + 1)) center_lbp += 128; lbp.at<uchar>(row, col) = center_lbp; //把center处计算好的LBP值存放在lbp图像的相应位置 } } if(affiche == true) { cv::imshow("image LBP", lbp); waitKey(10); cv::imshow("grayscale",Image); waitKey(10); } else { cv::destroyWindow("image LBP"); cv::destroyWindow("grayscale"); } return lbp;}int main(){ Mat frame1; frame1= imread("2.jpg"); LBP(frame1);cvWaitKey(0); return 0;}实验结果:
1 原图
2 LBP图
参考内容:http://www.codeproject.com/Questions/863970/LBP-opencv-cplusplus-problem
0 0
- opencv:求一幅图片的LBP纹理图(c++版本)
- LBP纹理图的提取
- 基于OpenCV的LBP算法(OpenCV1.0版本)
- 【数字图像处理】计算输入图像(jpg、bmp等)的LBP纹理图、纹理直方图及纹理图各像素的直方图并显示
- 纹理特征-LBP的扩展DLBP
- 纹理特征-LBP的扩展DLBP
- 纹理特征-LBP的扩展VLBP
- 纹理分类(一)全局特征LBP
- 纹理分类(一)全局特征LBP
- 纹理特征之(一) LBP
- LBP 局部纹理特征(一)
- 纹理特征提取(1):LBP
- Opencv 导入图片 Opengl 显示纹理(含用例代码)
- C版本的OpenCV函数
- LBP纹理特征
- LBP纹理特征
- LBP纹理特征
- 纹理特征-LBP
- wiki百科翻译之Lean software development之Deliver as fast as possible
- Duplicate column name 'xxx'错误
- 项目常用第三方库收集
- android intent.setType("type");的含义
- leetcode 144. Binary Tree Preorder Traversal
- opencv:求一幅图片的LBP纹理图(c++版本)
- CAS(3)——Cas Server中各配置文件介绍
- 注册表
- activemq cluster masterslave 配置
- JavaScript高级程序设计(第3版)学习笔记——callee
- 进制之间的转换
- linux下的.so和.a文件
- [Java笔试面试知识点自整理系列]Java线程中run和start方法的区别
- Python微博地点签到大数据实战(二)POI与坐标