图像处理之基础---基于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图像转换为灰度图像 一维,二维 ...
随机推荐
- 利用jQuery对li标签操作
<ul class="con" id="products"> <li i=" class=""> < ...
- IO之BufferedStream缓冲流举例
import java.io.*; public class TestBufferStream1 { public static void main(String[] args) { try { Fi ...
- Python自动化测试-使用Pandas来高效处理测试数据
一.思考 1.Pandas是什么? 功能极其强大的数据分析库 可以高效地操作各种数据集 csv格式的文件 Excel文件 HTML文件 XML格式的文件 JSON格式的文件 数据库操作 2.经典面试题 ...
- 安装 asp.net core 出错
I received the same error message on a fresh Windows 10 install, with a fresh Visual Studio 2015 ins ...
- Shrio Demo
package com.atguigu.shiro.helloworld; import org.apache.shiro.SecurityUtils; import org.apache.shiro ...
- vim学习之旅01-文本搜索并高亮显示
step 1:在linux终端新建一个test.txt文本文档:vim test.txt; 回车后打开编辑器: step 2:进入编辑状态(键盘"i")输入一段文本,退出编辑(键盘 ...
- Quartz.Net 学习之路02 初探Quartz.Net
第二讲:简单的实例,看看Quartz.Net强在哪里? 直接上代码,代码里有注释: using System; using Quartz; using Quartz.Impl; namespace L ...
- 【状压+状态转移】A Famous Airport Managere
https://www.bnuoj.com/v3/problem_show.php?pid=25653 [题意] 给定一个3*3的九宫格,模拟一个停机坪.第一个格子一定是'*',代表take off ...
- 详解SpringBoot集成jsp(附源码)+遇到的坑
本文介绍了SpringBoot集成jsp(附源码)+遇到的坑 ,分享给大家 1.大体步骤 (1)创建Maven web project: (2)在pom.xml文件添加依赖: (3)配置applica ...
- POJ 2186 tarjan+缩点 基础题
Popular Cows Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 37111 Accepted: 15124 De ...