资源简介

===环境:VS2013+Qt5.5.1+opencv+大恒相机 ===功能:采集+显示+保存 ===扩展:图像显示函数可以直接添加opencv图像处理

资源截图

代码片段和文件信息

// HandImageProcess.cpp : 定义控制台应用程序的入口点。
//

#include “stdafx.h“
#include 
#include 
#include 

using namespace cv;



void enhence(cv::Mat&srcmat)
{
if (srcmat.channels() > 1)
{
cv::cvtColor(srcmat srcmat cv::COLOR_BGR2GRAY);
}

int low_bound = 65;
int up_bound = 180;
float pow_index = 1.5;


for (int i = 0; i < srcmat.rows; i++)
{
for (int j = 0; j < srcmat.cols; j++)
{
if (srcmat.at(i j) < low_bound)
{
srcmat.at(i j) = 0;
}
else if (srcmat.at(i j) > up_bound)
{
srcmat.at(i j) = 255;
}
else
{
srcmat.at(i j) = (unsigned char)(255.0 *(powf((srcmat.at(i j) - low_bound) pow_index) / powf((up_bound - low_bound) pow_index))); //目前pow_index = 1.5
}
}
}


}


void HandImagepro(cv::Mat&int_mat cv::Mat&out_mat)
{
if (int_mat.empty())
{
return;
}

//cvtColor(int_mat int_mat COLOR_BGR2GRAY);

Mat double_mat;
int_mat.convertTo(double_mat CV_32FC1 1.0/255 0);

Mat blurmat;
blur(double_mat blurmat Size(128 128));

Mat submat(double_mat.rows double_mat.cols CV_32FC1);
for (int i = 0; i < submat.rows; i++)
{
for (int j = 0; j < submat.cols;j++)
{
submat.at(i j) = 1.0*double_mat.at(i j) - blurmat.at(i j);
}
}


double minval = 0;
double maxval = 0;
minMaxIdx(submat &minval &maxval);


for (int i = 0; i < submat.rows; i++)
{
for (int j = 0; j < submat.cols; j++)
{
submat.at(i j) = 1.0*submat.at(i j) - minval;
}
}



minMaxIdx(submat &minval &maxval);
for (int i = 0; i < submat.rows; i++)
{
for (int j = 0; j < submat.cols; j++)
{
submat.at(i j) = 1.0*submat.at(i j) / maxval;
}
}



minMaxIdx(submat &minval &maxval);
printf(“minval=%f maxval=%f\n“ minval maxval);

Scalar meanval stddevval;
meanStdDev(submat meanval stddevval);
printf(“meaval=%f\n“ meanval[0]);



for (int i = 0; i < submat.rows; i++)
{
for (int j = 0; j < submat.cols; j++)
{
double tmpdata = (meanval[0] / submat.at(i j));
double tmp = 1.0 / (pow(tmpdata 6) + 1);

submat.at(i j) = tmp*255;
}
}
minMaxIdx(submat &minval &maxval);
meanStdDev(submat meanval stddevval);
printf(“minval=%f maxval=%f meaval=%f\n“ minval maxval meanval[0]);


imwrite(“E:\\project\\Samples\\imgs_class\\1\\95.bmp“ submat);
submat.convertTo(out_mat CV_8UC1 1 0);



equalizeHist(out_mat out_mat);
imwrite(“E:\\project\\Samples\\imgs_class\\1\\96.bmp“ out_mat);


for (int i = 0; i < submat.rows; i++)
{
for (int j = 0; j < submat.cols; j++)
{
submat.at(i j) = submat.at(i j)*submat.at(i j)*submat.at(i j);
}
}

normalize(submat submat 0 255 CV_MINMAX);

//转换成8bit图像显示  
convertS

评论

共有 条评论