资源简介
C语言实现梯度的计算,速度比opencv快,效率高,可移植性强,代码的阅读性好,图像处理与c语言的有效结合
代码片段和文件信息
实现1(完全借助OpenCV的函数,较慢):
#include “stdafx.h“
#include “highgui.h“
#include “cv.h“
void Soble(IplImage *imgIplImage* gradientImage)
{
IplImage* H = cvCreateImage(cvGetSize(img) 321);
IplImage* V = cvCreateImage(cvGetSize(img) 321);
IplImage* HV = cvCreateImage(cvGetSize(img) 321);
//both horizontal and vertical gradient
cvSobel(imgH013);
cvSobel(imgV103);
//total gradient = sqrt(horizontal*horizontal+vertical*vertical)
int ij;
double v1v2v;
for (i=0;iheight;i++)
{
for (j=0;jwidth;j++)
{
v1 = cvGetReal2D(Hij);
v2 = cvGetReal2D(Vij);
v = sqrt(v1*v1+v2*v2);
cvSetReal2D(HVijv);
}
}
cvNormalize(HVgradientImage0255CV_MINMAX0);
cvReleaseImage(&H);
cvReleaseImage(&V);
cvReleaseImage(&HV);
}
int _tmain(int argc _TCHAR* argv[])
{
IplImage * img = cvLoadImage(“1.jpg“1);
IplImage *grayImage = cvCreateImage(cvGetSize(img) 8 1);
IplImage *gradientImage = cvCreateImage(cvGetSize(img)81);
cvCvtColor(img grayImage CV_BGR2GRAY); // color to gray
double t = cvGetTickCount();
Soble(grayImagegradientImage);
t = (cvGetTickCount()-t)/1000000;
printf(“time: %4.4f\n“ t);
cvNamedWindow(“grayImage“1);
cvShowImage(“grayImage“grayImage);
cvNamedWindow(“gradientImage“1);
cvShowImage(“gradientImage“gradientImage);
cvWaitKey(0);
cvReleaseImage(&img);
cvReleaseImage(&grayImage);
cvReleaseImage(&gradientImage);
return 0;
}
效果图如下:
实现2(借助指针,较快):
#include “stdafx.h“
#include “highgui.h“
#include “cv.h“
int FastSobel(unsigned char *in int width int height int widthStep
unsigned char *edg unsigned char *ang)
{
int ij;
unsigned char *inPtr = NULL;
unsigned char *inPtr1 = NULL;
unsigned char *inPtr2 = NULL;
unsigned char *inPtr3 = NULL;
unsigned char *inPtr4 = NULL;
unsigned char *inPtr5 = NULL;
unsigned char *inPtr6 = NULL;
int *pEdgeX = (int *)calloc(width*height sizeof(int));
int *pEdgeY = (int *)calloc(width*height sizeof(int));
int *pEdgeXPtr = NULL;
int *pEdgeYPtr = NULL;
unsigned char *angPtr = NULL;
unsigned char *edgPtr = NULL;
// this is heuristic and it should add receptive area
i
- 上一篇:C语言超市收银模拟系统
- 下一篇:c++ http并保存到本地
相关资源
- C语言超市收银模拟系统
- B样条曲线绘制、bezier曲线绘制c语言实
- 背包问题实验报告C语言实现、文件输
- C语言编写的pl0语言编译器
- 矩阵键盘C语言代码,proteus仿真电路
- C语言编写班费管理系统
- 教学计划编制 数据结构 C语言
- ER随机图代码C语言
- 集合的并交叉三种运算,C语言实现
- c语言实现简单数据库
- C语言实现局域网扫描器
- C语言实现企业员工管理系统的源代码
- kalman和ukf滤波C语言源码和
- 用C语言实现简单的数据库增删改查功
- 第6章 C语言和汇编语言混合编程(
- 构建二叉树、输出二叉树、求树深、
- WM(Wu-Manber)算法详解及C语言实现
- 智能双电梯的C语言程序实现
- 数据结构家族谱管理系统C语言源代码
- C语言实现三自由度机械臂轨迹规划源
- C8051F310虚拟I2C C语言代码
- 用C语言实现视频分割
- 数据结构课程设计C语言版运动会分数
- 遗传算法求解中国旅行商问题C语言
- C语言--旅游管理系统文件,结构体数
- 基于c语言的银行业务模拟
- C语言实现:Linux下的myshell
- C语言程序设计药房药品管理系统
- C语言:英文单词小助手源代码
- c语言五子棋代码
评论
共有 条评论