图像处理之基础---基于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图像转换为灰度图像 一维,二维 ...
随机推荐
- 打开windows服务
#include <winsvc.h> void CXXXDlg::ServiceRun() { SERVICE_STATUS ssStatus; //获得ServiceControl M ...
- python 调用exe程序
#!/usr/bin/python #-*- coding:utf-8 -*- import os, subprocess import tkMessageBox import msg_box def ...
- mysql主库与从库配置(并行复制配置)
主库: [mysqld] server-id = 2233port = 13306basedir = /usr/local/mysqldatadir = /usr/local/mysql/data s ...
- Xshell连接Centos7.5和yum
目 录 第1章 Centos7 IP地址的配置 1 1.1 第一种配置ip方法(nmtui) 1 1.2 第二种 修改网卡配置文件 5 1.2.1 使用cat查看配置文件 5 ...
- 树莓派 - 通过sysfs操控GPIO
点亮或熄灭LED 硬件上,一个LED灯接在pi的Pin-25. 该引脚为BCM的GPIO26 $ gpio readall +-----+-----+---------+------+---+--- ...
- 8.url路由
1.单一路由对应 url(r'^index/$', views.index), 这里要注意的是,/$ 表示只有只/结尾的才有效,如果把$符号去掉的话,只要是以index/开头都会匹配到这个url. 2 ...
- (十四)Python3 字符串格式化
Python3 字符串格式化 字符串的格式化方法分为两种,分别为占位符(%)和format方式.占位符方式在Python2.x中用的比较广泛,随着Python3.x的使用越来越广,format方式使用 ...
- Poj 1106 Transmitters
Poj 1106 Transmitters 传送门 给出一个半圆,可以任意旋转,问这个半圆能够覆盖的最多点数. 我们枚举每一个点作为必然覆盖点,那么使用叉积看极角关系即可判断其余的点是否能够与其存在一 ...
- VI/VIM 编辑器
[是什么?] VI 是 Unix 操作系统和类 Unix 操作系统中最通用的文本编辑器. VIM 编辑器是从 VI 发展出来的一个性能更强大的文本编辑器.可以主动的以字体颜色辨别语法的正确性,方便程序 ...
- sqlite3 新建数据库的过程
有些东西,很简单,不过有坑,就变复杂了.我先说最简单的方法,新建一个空的txt文档,然后把后缀改为db就可以了.-_-蛋疼,其实一开始我是不知道的,也是后来成功新建db后发现db为0kb才大胆地做了这 ...