图像处理之基础---基于opencv的灰度图像微分
argv分别为,可执行文件名、读入的原始图像、输出原始图像的灰度值、输出原始图像灰度值沿x轴方向的一阶微分、输出原始图像灰度值沿x轴方向的二阶微分。
#include
#include
#include
#include
#include
#pragma comment( lib, "opencv_highgui243d.lib" )
#pragma comment( lib, "opencv_core243d.lib" )
#pragma comment( lib, "opencv_ml243d.lib" )
#pragma comment( lib, "opencv_imgproc243d.lib" )
int main( int argc, char** argv ) {
int height, width, step, channels;
uchar *grayData;
uchar grayDataTmp, prev1GrayDataTmp, prev2GrayDataTmp;
int differentialGrayFirstOrder, differentialGraySecondOrder, prevDifferentialGrayFirstOrder;
int i, j;
FILE *fpGrayOrgn, *fpGrayFirst, *fpGraySecond;
IplImage *grayImg;
//load image in single channel, aka. transform the image to gray (but not save)
grayImg = cvLoadImage(argv[1], 0);
//exit from failing loading source image
if (!grayImg)
{
printf("Could not load image file: %s", argv[1]);
exit(1);
}
//get basic information of the image
height = grayImg->height;
width = grayImg->width;
step = grayImg->widthStep;
channels = grayImg->nChannels;
//print image on screen and show basic information of the image
printf("Processing a %dx%d image with %d channels\n", height, width, channels);
cvNamedWindow ("mineSweeperWindow", CV_WINDOW_AUTOSIZE);
cvShowImage ("mineSweeperWindow", grayImg);
//exit from file create error
fpGrayOrgn = fopen(argv[2], "w+");
if (fpGrayOrgn == NULL)
{
printf("File %s create/open error!", argv[2]);
exit(2);
}
fpGrayFirst = fopen(argv[3], "w+");
if (fpGrayFirst == NULL)
{
printf("File %s create/open error!", argv[3]);
exit(3);
}
fpGraySecond = fopen(argv[4], "w+");
if (fpGraySecond == NULL)
{
printf("File %s create/open error!", argv[4]);
exit(4);
}
//move pointer to the start of file
rewind(fpGrayOrgn);
rewind(fpGrayFirst);
rewind(fpGraySecond);
//get every value (in gray) and output to a txt file
grayData = (uchar *)grayImg->imageData;
for (i = 0; i < height; ++i)
{
for (j = 0; j < width; ++j)
{
//get value
grayDataTmp = grayData[i*step+j];
fprintf(fpGrayOrgn, "%4d ", grayDataTmp);
//init
if (0 == j)
{
prev1GrayDataTmp = 0;
prev2GrayDataTmp = 0;
prevDifferentialGrayFirstOrder = 0;
}
//calculate difference of first-order
differentialGrayFirstOrder = (int)grayDataTmp - (int)prev1GrayDataTmp;
fprintf (fpGrayFirst, "%4d", differentialGrayFirstOrder);
//calculate difference of second-order
differentialGraySecondOrder = differentialGrayFirstOrder - prevDifferentialGrayFirstOrder;
fprintf (fpGraySecond, "%4d", differentialGraySecondOrder);
//re-assignment
prevDifferentialGrayFirstOrder = differentialGrayFirstOrder;
prev2GrayDataTmp = prev1GrayDataTmp;
prev1GrayDataTmp = grayDataTmp;
}
//insert a newline
fprintf(fpGrayOrgn, "\n");
fprintf(fpGrayFirst, "\n");
fprintf(fpGraySecond, "\n");
}
fclose (fpGrayOrgn);
fclose (fpGrayFirst);
fclose (fpGraySecond);
//end print process
cvWaitKey(0);
cvReleaseImage( &grayImg );
cvDestroyWindow("mineSwepperWindow");
return ( 0 );
}
【】
http://www.infineon-ecosystem.org/focusnie/blog/13-07/295656_9bd39.html
图像处理之基础---基于opencv的灰度图像微分的更多相关文章
- Python图像处理丨基于OpenCV和像素处理的图像灰度化处理
摘要:本篇文章讲解图像灰度化处理的知识,结合OpenCV调用cv2.cvtColor()函数实现图像灰度操作,使用像素处理方法对图像进行灰度化处理. 本文分享自华为云社区<[Python图像处理 ...
- 图像处理基础(2):自适应中值滤波器(基于OpenCV实现)
本文主要介绍了自适应的中值滤波器,并基于OpenCV实现了该滤波器,并且将自适应的中值滤波器和常规的中值滤波器对不同概率的椒盐噪声的过滤效果进行了对比.最后,对中值滤波器的优缺点了进行了总结. 空间滤 ...
- 基于Opencv的简单图像处理
实验环境 本实验均在笔记本电脑完成,电脑的配置如表1所示: 系统 Windows 10 家庭版 处理器 英特尔 Core i5-6200 @ 2.30GHz 双核 主板 宏碁 Zoro_SL 内存 1 ...
- 基于Opencv和Mfc的图像处理增强库GOCVHelper(索引)
GOCVHelper(GreenOpen Computer Version Helper )是我在这几年编写图像处理程序的过程中积累下来的函数库.主要是对Opencv的适当扩展和在实现Mfc程序时候的 ...
- 基于 opencv 的图像处理入门教程
前言 虽然计算机视觉领域目前基本是以深度学习算法为主,但实际上很多时候对图片的很多处理方法,并不需要采用深度学习的网络模型,采用目前成熟的图像处理库即可实现,比如 OpenCV 和 PIL ,对图片进 ...
- 基于OpenCV的火焰检测(一)——图像预处理
博主最近在做一个基于OpenCV的火焰检测的项目,不仅可以检测图片中的火焰,还可以检测视频中的火焰,最后在视频检测的基础上推广到摄像头实时检测.在做这个项目的时候,博主参考了很多相关的文献,用了很多种 ...
- OpenCV2学习笔记(十四):基于OpenCV卡通图片处理
得知OpenCV有一段时间.除了研究的各种算法的内容.除了从备用,据导游书籍和资料,尝试结合链接的图像处理算法和日常生活,第一桌面上(随着摄像头)完成了一系列的视频流处理功能.开发平台Qt5.3.2+ ...
- 基于 OpenCV 的人脸识别
基于 OpenCV 的人脸识别 一点背景知识 OpenCV 是一个开源的计算机视觉和机器学习库.它包含成千上万优化过的算法,为各种计算机视觉应用提供了一个通用工具包.根据这个项目的关于页面,OpenC ...
- Canny边缘检测算法(基于OpenCV的Java实现)
目录 Canny边缘检测算法(基于OpenCV的Java实现) 绪论 Canny边缘检测算法的发展历史 Canny边缘检测算法的处理流程 用高斯滤波器平滑图像 彩色RGB图像转换为灰度图像 一维,二维 ...
随机推荐
- BZOJ4318: OSU! (概率DP)
题意:一个串 给出每个字符为1的可能性 否则为0 一段连续的1能获得长度的立方的收益 问总收益的期望 题解:设x_i为到第i位时连续的1的期望长度 由i-1递推来的贡献 如果这一位是0没有贡献 如果是 ...
- 原生 js 上传图片
js <!doctype html> <html> <head> <meta charset="utf-8"> <title& ...
- 第3节 mapreduce高级:2、3、课程大纲&共同好友求取步骤一、二
第五天课程大纲:1.社交粉丝的数据分析:求共同好友2.倒排索引的建立3.自定义inputFormat合并小文件 4.自定义outputformat5.分组求topN6.MapReduce的其他补充 了 ...
- oracle分析函数之ratio_to_report
ratio_to_report主要完成对百分比的计算,语法为ratio_to_report(exp) over()也就是根据over窗口函数的作用区间,求出作用区间中的单个值在整个区间的总值的比重比如 ...
- Linux安装64位Mysql5.7.22
以安装在/usr/local目录下为例 1.下载安装包地址:https://dev.mysql.com/downloads/file/?id=476936,安装包保存到/usr/local 2.解压: ...
- 诊断:MRP0: Background Media Recovery terminated with error 1111
表现: 灾备环境,无法继续应用日志. 日志: MRP0: Background Media Recovery terminated with error 1111 Fri Jan 18 15:55:2 ...
- 「 Luogu P2657 」 windy数
# 题目大意 给出区间 $[a,b]$,求出区间中有多少数满足下列两个条件 不含有前导 $0$. 相邻两个数字之差的绝对值至少是 $2$. # 解题思路 数位 $DP$,用记忆化搜索来实现.设 $dp ...
- Python 文件修改-函数介绍
上节课复习:1.字符编码 1.1 如何解决乱码问题: 字符存取使用的编码标准不一致 1.2 文件头 在文件的首行写入文件头,用于控制Python解释器读取py文件内容时使用的编码 #coding:文件 ...
- ibdata过大删除的方法
1.做数据库的逻辑备份 mysqldump -uroot -p123456 -B xx xx xx xx > /backup/all.sql 2.停止mysql进程 service mysqld ...
- mui.openWindow的html5+和web传参的兼容
mui.openWindow兼容web&plus环境下的页面传参 背景介绍 刚刚好要写个微信公众号和html5+兼容的项目 发现总是用localStorage传参不是事啊 太不优雅了 想了想还 ...