Opencv--常用操作函数讲解

我们先来看一段关于边缘检测的代码:

//边缘检测 canny算子
#include"cv.h"
#include"highgui.h"
#include<iostream>
using namespace std;
char wndname[] = "Edge";
char tbarname[] = "Threshold";
int edge_thresh = 1;
IplImage * image = 0,* cedge = 0,*gray = 0,* edge=0;  //读取图像
   //定义跟踪条的callback函数
void on_trackbar(int h)
{
	cvSmooth(gray,edge,CV_BLUR,3,3,0);
	cvNot(gray,edge);
	//灰度图的边缘检测
	cvCanny(gray,edge,(float)edge_thresh,(float)edge_thresh*3,3);
	cvZero(cedge);
	cvCopy(image,cedge,edge);
	
	//显示图像
	cvShowImage(wndname,cedge);
}
int main(int argc,char **argv)
{
	char *filename = argc == 2?argv[1]:(char *) "fruits.jpg";
	if((image=cvLoadImage(filename,1))==0)  //flag=1>0为三通道彩色图
		return -1;
	cedge = cvCreateImage(cvSize(image->width,image->height),IPL_DEPTH_8U,3);
	//彩色图像转换为灰度图像
	gray = cvCreateImage(cvSize(image->width,image->height),IPL_DEPTH_8U,1);
	edge = cvCreateImage(cvSize(image->width,image->height),IPL_DEPTH_8U,1);
	cvCvtColor(image,gray,CV_BGR2GRAY);
	cvNamedWindow(wndname,1);
	cvCreateTrackbar(tbarname,wndname,&edge_thresh,100,on_trackbar);
	on_trackbar(0);
	int pos = cvGetTrackbarPos("tbarname","wndname");
	cout<<pos<<endl;
	cvWaitKey(0);
	cvReleaseImage(&image);
	cvReleaseImage(&gray);
	cvReleaseImage(&edge);
	cvDestroyWindow(wndname);
	return 0;
}


Opencv--常用操作函数讲解_第1张图片

可以看到canny算子的简单运用在opencv中也涉及到很多函数,这里在读代码的同时对opencv中用到的函数进行讲解:


窗口管理:

输入处理:(拖动条事件的处理,鼠标时间的处理)

分配和释放图像函数:

IplImage *cvCreateImage(CvSize size,int depth,int channels)
size可以通过函数cvSize(width,height)得到。

设置得到感兴趣的区域:

文件中图像的读写:

访问图像元素:

图像转换:

(绘制图像命令可以不用深究)


离散变换:(一维或者二维浮点数组的离散傅立叶变换或离散傅立叶逆变换)


你可能感兴趣的:(Opencv--常用操作函数讲解)