以前用Matlab做图像处理的研究,但用久了发现Matlab把所有函数都封装了,不方便查看源程序,于是果断改用OpenCV来做计算机视觉方面的编程,它的源代码开源是我最喜欢它的地方,但是习惯了Matlab中直接可以看到的矩阵数据视图,在OpenCV中怎么得到一副图像的灰度值矩阵并显示出来呢?
我们可以选择将图像的灰度数据导出到Excel中来查看,效果和Matlab中的表格显示类似。

前期准备工作(包括相关工具或所使用的原料等)
VSOFFICE软件OpenCV详细的操作方法或具体步骤
Matlab软件可以自动保存中间变量的值并可以可视化方式显示

下面详细介绍在VS中如何将图像的数据导出出Excel中
如果您的VS已经配置好了OpenCV库,那么可以将下面程序直接得到到你新建的工程文件中运行
#include
#include
#include
#include
#include
using namespace std;
using namespace cv;
IplImage* Igray=0;
IplImage* It=0;
IplImage* Iat;
void main()
{
Igray=cvLoadImage("hand.jpg", CV_LOAD_IMAGE_GRAYSCALE);//加载图像的函数
It=cvCreateImage(cvSize(Igray->width, Igray->height), IPL_DEPTH_8U, 1);
Iat=cvCreateImage(cvSize(Igray->width, Igray->height), IPL_DEPTH_8U, 1);
cvThreshold(Igray, It, 150, 255, CV_THRESH_BINARY);//单一阈值
cvAdaptiveThreshold(Igray, Iat, 255, CV_ADAPTIVE_THRESH_MEAN_C, CV_THRESH_BINARY, 3, 5);//自适应阈值
CvScalar p; //保存通道的像素
ofstream outfile("http://jingyan.baidu.com/OpenCVTest/output/gray.xls");
for (int i=0; i
{
for (int j=0; j
{
//if (i==0)
// outfile << "第" << j << "列\t";
//if (0==j)
// outfile << "第" << i << "行\t";
p=cvGet2D(Iat, i, j);
outfile << p.val[0] << "\t";
}
outfile << l;
} //*/
cvNamedWindow("orignal", 1);
cvNamedWindow("threshold", 1);
cvNamedWindow("adaptiveThresh", 1);
cvShowImage("orignal", Igray);
cvShowImage("threshold", It);
cvShowImage("adaptiveThresh", Iat);
cvWaitKey(0);
cvReleaseImage(&Igray);
cvReleaseImage(&It);
cvReleaseImage(&Iat);
cvDestroyWindow("orignal");
cvDestroyWindow("threshold");
cvDestroyWindow("adaptiveThresh");
}

注意上面代码中的加粗行:一个是加载图像的函数;一个是导出图像数据的函数
此外最重要的一句是:outfile << p.val[0] << "\t";
其中的“\t"一定要添加,它是制表符,这样能够使图像数据对应到Excel中的每一行每一列
注:其他程序的输出代码类似,一定要在输出的代码语句中添加格式控制"\t",方可完美导出到Excel
如果ofstream outfile("http://jingyan.baidu.com/OpenCVTest/output/gray.xls");这句中的xls改成txt,则输出的数据格式比较乱,不易观察行列数

导出到Excel后,可以方面查看第几行第几列的数据,比如查看第10行第6列

一般Excel的列数以字母符号显示的,通过设置便可达到上面效果。由于已经写过了这个问题经验,可以直接关注我的百度经验,便可以找到了具体的设置。

注意事项
如果对本经验有什么不清楚的地方或遇到什么问题,可能是我描述的问题,您可以给我评论指教哦。我会及时给予回复的。
【如果觉得有用帮忙点个赞哦,这样这篇文章才能让更多的人看到,才能帮助更多的人,大家一起努力进步哦!】
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。作者声明:本文系本人依照真实经历原创,未经许可,谢绝转载。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
