robert 边缘检测
来源:互联网 发布:听电子书的软件 编辑:程序博客网 时间:2024/04/28 13:02
#include "cv.h"
#include "highgui.h"
#include <math.h>
#include "stdio.h"
#pragma comment(lib, "cv.lib")
#pragma comment(lib, "cxcore.lib")
#pragma comment(lib, "highgui.lib")
void robert(IplImage *src,IplImage *robert)
{
int x,y,i,w,h;
int temp,temp1;
uchar* ptr;
int ptr1[4]={0};
int indexx[4]={0,1,1,0};
int indexy[4]={0,0,1,1};
//IplImage *robert;
//gray=cvCreateImage(cvGetSize(src),IPL_DEPTH_8U,1);
// cvCvtColor(src,gray,CV_RGB2GRAY);
/*-------------Roberts算子-------------------*/
robert=cvCloneImage(src);
//robert=cvCreateImage(cvGetSize(src),src->widthStep,1);
ptr=(uchar*)robert->imageData;
w=robert->width;
h=robert->height;
printf("%d %d",w,h);
for(y=0;y<h-1;y++)
for(x=0;x<w-1;x++)
{
for(i=0;i<4;i++)
{
ptr1[i]= *(ptr+(y+indexy[i])*robert->widthStep+x+indexx[i]);
}
temp=abs(ptr1[0]-ptr1[2]);
temp1=abs(ptr1[1]-ptr1[3]);
temp=(temp>temp1?temp:temp1);
//temp=(int) sqrt(temp*temp+temp1*temp1);
temp=(int) sqrt(temp*temp+temp1*temp1);
if (temp>25)
temp=255;
else temp=0;
*(ptr+y*robert->widthStep+x)=temp;
}
cvNamedWindow("robert",1);
cvShowImage("robert",robert);
cvWaitKey(0);
cvReleaseImage(&src);
cvReleaseImage(&robert);
}
void main()
{
IplImage *src,*dst;
src=cvLoadImage("11.jpg",0);
dst=cvCreateImage(cvGetSize(src),IPL_DEPTH_8U,1);
cvNamedWindow("src",1);
cvShowImage("src",src);
cvSmooth(src,src,CV_GAUSSIAN,3,3,0,0);
cvSmooth(src,src,CV_MEDIAN,3,3,0,0);
cvErode(src,src,NULL,1);
cvDilate(src,src,NULL,1);
cvThreshold(src,src,100,255,CV_THRESH_BINARY_INV);
//cvAdaptiveThreshold(src,src,34,CV_ADAPTIVE_THRESH_MEAN_C,CV_THRESH_BINARY,3,5);
//cvSmooth(src,src,CV_GAUSSIAN,3,3,0,0);
robert(src,dst);
}
#include "highgui.h"
#include <math.h>
#include "stdio.h"
#pragma comment(lib, "cv.lib")
#pragma comment(lib, "cxcore.lib")
#pragma comment(lib, "highgui.lib")
void robert(IplImage *src,IplImage *robert)
{
int x,y,i,w,h;
int temp,temp1;
uchar* ptr;
int ptr1[4]={0};
int indexx[4]={0,1,1,0};
int indexy[4]={0,0,1,1};
//IplImage *robert;
//gray=cvCreateImage(cvGetSize(src),IPL_DEPTH_8U,1);
// cvCvtColor(src,gray,CV_RGB2GRAY);
/*-------------Roberts算子-------------------*/
robert=cvCloneImage(src);
//robert=cvCreateImage(cvGetSize(src),src->widthStep,1);
ptr=(uchar*)robert->imageData;
w=robert->width;
h=robert->height;
printf("%d %d",w,h);
for(y=0;y<h-1;y++)
for(x=0;x<w-1;x++)
{
for(i=0;i<4;i++)
{
ptr1[i]= *(ptr+(y+indexy[i])*robert->widthStep+x+indexx[i]);
}
temp=abs(ptr1[0]-ptr1[2]);
temp1=abs(ptr1[1]-ptr1[3]);
temp=(temp>temp1?temp:temp1);
//temp=(int) sqrt(temp*temp+temp1*temp1);
temp=(int) sqrt(temp*temp+temp1*temp1);
if (temp>25)
temp=255;
else temp=0;
*(ptr+y*robert->widthStep+x)=temp;
}
cvNamedWindow("robert",1);
cvShowImage("robert",robert);
cvWaitKey(0);
cvReleaseImage(&src);
cvReleaseImage(&robert);
}
void main()
{
IplImage *src,*dst;
src=cvLoadImage("11.jpg",0);
dst=cvCreateImage(cvGetSize(src),IPL_DEPTH_8U,1);
cvNamedWindow("src",1);
cvShowImage("src",src);
cvSmooth(src,src,CV_GAUSSIAN,3,3,0,0);
cvSmooth(src,src,CV_MEDIAN,3,3,0,0);
cvErode(src,src,NULL,1);
cvDilate(src,src,NULL,1);
cvThreshold(src,src,100,255,CV_THRESH_BINARY_INV);
//cvAdaptiveThreshold(src,src,34,CV_ADAPTIVE_THRESH_MEAN_C,CV_THRESH_BINARY,3,5);
//cvSmooth(src,src,CV_GAUSSIAN,3,3,0,0);
robert(src,dst);
}
0 0
- Robert 边缘检测算子
- robert 边缘检测
- robert边缘检测
- 边缘检测之Robert算子
- opencv边缘检测(robert,prewitt,sobel,canny,laplacian)
- Robert算子、sobel算子、Prewitt算子、canny边缘检测算子
- 图像处理中各种边缘检测的微分算子简单比较(Sobel,Robert, Prewitt,Laplacian,Canny)
- 图像处理中各种边缘检测的微分算子简单比较(Sobel,Robert, Prewitt,Laplacian,Canny)
- 图像处理中各种边缘检测的微分算子简单比较(Sobel,Robert, Prewitt,Laplacian,Canny)
- 图像处理中各种边缘检测的微分算子简单比较(Sobel,Robert, Prewitt,Laplacian,Canny)
- 边缘检测的各种微分算子比较(Sobel,Robert,Prewitt,Laplacian,Canny)
- 图像处理中各种边缘检测的微分算子简单比较(Sobel,Robert, Prewitt,Laplacian,Canny)
- [转载]边缘检测的各种微分算子比较(Sobel,Robert,Prewitt,Laplacian,Canny)
- 图像处理中各种边缘检测的微分算子简单比较(Sobel,Robert, Prewitt,Laplacian,Canny)
- 图像处理中各种边缘检测的微分算子简单比较(Sobel,Robert, Prewitt,Laplacian,Canny)
- 图像处理中各种边缘检测的微分算子简单比较(Sobel,Robert, Prewitt,Laplacian,Canny)
- 图像处理中各种边缘检测的微分算子简单比较(Sobel,Robert, Prewitt,Laplacian,Canny)
- Opencv图像识别从零到精通(19)----Robert,prewitt,Sobel边缘检测
- [数据结构与算法]编译原理文法知识
- JAVA学习第六十课 — UDP协议 &基于多线程模拟简单的QQ聊天程序
- 程序性能优化探讨(2)——循环展开优化详议
- HDU 1864 最大报销额
- 查看sql某字段是否为主键
- robert 边缘检测
- php基础备查
- 求数组的子数组之和的最大值
- POJ 1859 The Perfect Symmetry && POJ2526 Center of symmetry(思维题)
- CC3200学习笔记
- POJ 3667 splay区间合并练习
- 在Spring中使用Quartz进行任务调度
- setup_irq与request_irq的区别
- Lua 标准库 - 操作系统处理(operating system facilities)