图像处理之基础---基于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图像转换为灰度图像 一维,二维 ...
随机推荐
- selenium+python自动化unittest之跳过用例skip
前言 当测试用例写完后,有些模块有改动时候,会影响到部分用例的执行,这个时候我们希望暂时跳过这些用例. 或者前面某个功能运行失败了,后面的几个用例是依赖于这个功能的用例,如果第一步就失败了,后面的用例 ...
- Syslinux编译环境配置简要步骤
由于毕业设计要做一个加密U盘的LINUX,需要修改一sysylinux引导程序,在网上很少有关于syslinux编译环境配置的文章,在此简要总结一下,发出来共享. 需要的软件: 1. vmware ...
- 用PHP怎么删除某目录下指定的一个文件
举个tp框架的例子 $User = M("message"); $a = $User->]['url']; unlink($url); $User->delete($i ...
- 2018 CCPC 桂林站(upc复现赛)总结
比赛一开始盯上了A题和G题,一个小时过去了还没有出题,心里有些乱.这时我看D题很多人过了,于是宝儿去看D题,说D题简单,转化成二进制暴力,于是就去做了.写的时候好像思路有点卡,WA了一发,后来马上发现 ...
- BZOJ 2502 Luogu P4843 清理雪道 最小流
题意: 滑雪场坐落在FJ省西北部的若干座山上. 从空中鸟瞰,滑雪场可以看作一个有向无环图,每条弧代表一个斜坡(即雪道),弧的方向代表斜坡下降的方向. 你的团队负责每周定时清理雪道.你们拥有一架直升飞机 ...
- yii1框架,事务使用方法
Yii1框架事务操作方法如下: $transaction= Yii::app()->db->beginTransaction();//创建事务 $transaction->commi ...
- 并不简单的Integer
Integer是一个看着挺简单的,其实还是有点不一样,Integer是一个int的包装类,它是可以起到缓存作用的,在java基础里说过它的范围是(-128-127)在这个返回是有缓存的,不会创建新的I ...
- js 技巧 (七)JS代码判断集锦(之一)
JS代码判断集锦(之一) ~~~~~~~~~~~~~~~~~~ <script language="JavaScript"> function checkid(iden ...
- Ubuntu 系统安装(这里用ubuntu 16.04)
一.安装Vmware Workstation 12 选择新建虚拟机- 下一步-安装根据红框部分及说明一步一步进行 点击下一步进行 接下来默认下一步,直到如下图 这里的最大磁盘大小100G.不会直接在本 ...
- MongoDB中mapReduce的使用
MongoDB中mapReduce的使用 制作人:全心全意 mapReduce的功能和group by的功能类似,但比group by处理的数据量更大 使用示例: var map = function ...