计算特征矩阵及哈希值(含OpenCV代码)
2017-03-11 22:17
357 查看
将简化色彩后的特征图像中每个像素依次与当前图像像素平均值进行比较
程序代码如下:
程序运行结构如下:
然后关于哈希值,如下所示:
程序代码如下:
#include <opencv2/opencv.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <stdio.h> using namespace cv; int main() { Mat srcImage = imread("1.jpg"); int mm=8, nn=8;//mm,nn为缩小后图像的大小。 int cc=64; //cc为图像简化色彩后的灰度级数。 int t[8 * 8]; namedWindow("原图"); imshow("原图", srcImage); cvtColor(srcImage, srcImage, CV_BGR2GRAY); //图像化为灰度 namedWindow("灰度原图"); imshow("灰度原图", srcImage); cv::Size dsize = Size(mm, nn); cv::resize(srcImage, srcImage,dsize); namedWindow("灰度缩小"); imshow("灰度缩小", srcImage); Mat Feature(mm, nn, CV_32SC1, Scalar::all(0)); int i, j; int M = srcImage.rows; int N = srcImage.cols; for (i = 0; i<M; i++) for (j = 0; j<N; j++) { Feature.at<int>(i / (M / mm), j / (N / nn)) = Feature.at<int>(i / (M / mm), j / (N / nn)) + srcImage.at<uchar>(i, j); // Feature.at<uchar>(i/(M/8),j/(N/8))+=m.at<uchar>(i,j); } //测试:看看缩小后,图像里面的每个像素值是多少: for(i=0;i<mm;i++) for (j = 0; j < nn; j++) printf_s("缩小后,图像里面的每个像素值(%d,%d)%d \n", mm, nn, Feature.at<int>(i, j)); printf_s("end\n"); //简化色彩。当前灰度级为8位,即256色,将其处理为cc色。 //这里设置cc=64 for (i = 0; i<mm; i++) for (j = 0; j<nn; j++) Feature.at<int>(i, j) /= (256 / cc); //测试:看看简化色彩后,图像内里面的每个像素值是多少: for(i=0;i<mm;i++) for (j = 0; j < nn; j++) printf_s("简化色彩后,图像内里面的每个像素值是多少(%d,%d):%d \n", mm, nn, Feature.at<int>(i, j)); //第3步:计算图像的平均值。 double sum, aver; sum = 0; for (i = 0; i<mm; i++) for (j = 0; j<nn; j++) sum += Feature.at<int>(i, j); aver = sum / (mm*nn); printf_s("sum=%lf,aver=%lf",sum,aver); //第4步:计算像素值与平均值大小关系。同时得到特征矩阵FeatureResult,并返回。 int flag = 0; int FeatureResult[8 * 8] = {0}; for (i = 0; i<mm; i++) for (j = 0; j<nn; j++) if (Feature.at<int>(i, j)>aver) FeatureResult[flag++] = 1; else FeatureResult[flag++] = 0; printf_s("\n特征矩阵:\n"); for (i = 0; i < mm*nn; i++) { printf_s("%d ", FeatureResult[i]); if (i % 7 == 0) printf_s("\n"); } printf("\n"); waitKey(); return 0; }
程序运行结构如下:
然后关于哈希值,如下所示:
相关文章推荐
- opencv 求矩阵的特征向量矩阵和特征值
- opencv 利用类haar小波特征的人脸、人眼等特征检测(带代码)
- opencv2.4.3中surf代码分析----(-)特征点提取
- opencv 图像仿射变换 计算仿射变换后对应特征点的新坐标 图像旋转、缩放、平移
- opencv中HOGDescriptor中计算特征的个数
- openCV找连通成分并计算相关轮廓特征
- opencv计算矩阵与数值的乘积,矩阵与矩阵的乘积
- opencv 图像仿射变换 计算仿射变换后对应特征点的新坐标 图像旋转、缩放、平移
- opencv2 矩阵方式 resize图像缩放代码及cvresize函数用法
- 使用opencv作物件识别(一) —— 积分直方图加速HOG特征计算
- 图像信息熵计算的OpenCV代码
- opencv2 矩阵方式 resize图像缩放代码
- 【OpenCV】计算Haar特征个数
- opencv 图像仿射变换 计算仿射变换后对应特征点的新坐标 图像旋转、缩放、平移
- opencv学习(6)——HOG参数简介及Hog特征维数的计算
- 常用矩阵计算C语言代码
- OpenCV源码中Haar训练及提取特征的代码
- opencv 求矩阵的特征向量矩阵和特征值
- OpenCV - 计算矩阵(cv::Mat)的特征值和特征向量
- CUDA程序代码--矩阵计算