您的位置:首页 > 编程语言 > C语言/C++

opencv基础实例(C++)

2016-11-15 23:26 190 查看
    最近正在学习opencv,主要涉及其中对图像的操作,现简单的给出部分基础实例,读者在使用时,只需打开某个实例的注释即可运行代码。有关各个函数的参数的具体意义并没有具体的说明,请读者自行阅读手册,这是学习opencv必须经历的过程。如下实例仅仅给读者一个编程参考,后续将持续更新。

/**
*@main.cpp
*@learning note
*@Ali
*/

#include "opencv2/core/core.hpp"
#include "opencv2/videoio/videoio.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"

using namespace cv;

int main()
{
///边缘提取sobel算子

IplImage *src = cvLoadImage("C:\\1.jpg", 1);
IplImage *dst = cvCreateImage(CvSize(src->width, src->height), src->depth, src->nChannels);
//cvSobel(src, dst, 0, 1, 7);//一般核
cvSobel(src, dst, 0, 1, CV_SCHARR);//优化过的核
cvShowImage("dst", dst);

///Laplace变换
/*
IplImage *src = cvLoadImage("C:\\1.jpg", 1);
IplImage *dst = cvCreateImage(CvSize(src->width, src->height), src->depth, src->nChannels);
cvLaplace(src, dst, 9);
cvShowImage("Laplace", dst);
*/

///blurring处理
/*
IplImage *src = cvLoadImage("C:\\1.jpg", 1);
IplImage *dst = cvCreateImage(CvSize(src->width, src->height), src->depth, src->nChannels);
cvSmooth(src, dst, CV_BLUR_NO_SCALE, 3, 0, 0.0, 0.0);
cvShowImage("Smooth", dst);
*/

///Erode腐蚀
/*
IplImage *src = cvLoadImage("C:\\1.jpg", 1);
IplImage *dst = cvCreateImage(CvSize(src->width, src->height), src->depth, src->nChannels);
cvErode(src, dst, 0,1);
*/

///Dilate膨胀
/*
IplImage *src = cvLoadImage("C:\\1.jpg", 1);
IplImage *dst = cvCreateImage(CvSize(src->width, src->height), src->depth, src->nChannels);
cvDilate(src, dst, 0, 1);
cvShowImage("Dilate", dst);
*/

///漫水填充法
/*
IplImage *src = cvLoadImage("C:\\1.jpg", 1);
IplImage *dst = cvCreateImage(CvSize(src->width, src->height), src->depth, src->nChannels);
cvFloodFill(src, CvPoint(10, 200), cvScalar(120,25,55), cvScalar(30,30,30), cvScalar(30,30,30), NULL, 8, NULL);
cvShowImage("src", src);
*/

///尺寸调整
/*
IplImage *src = cvLoadImage("C:\\1.jpg", 1);
IplImage *dst = cvCreateImage(CvSize((src->width)*0.5, (src->height)*0.5), src->depth, src->nChannels);
cvResize(src, dst, CV_INTER_LINEAR);
cvShowImage("Resize", dst);
*/

///图像金字塔
/*
IplImage *src = cvLoadImage("C:\\1.jpg", 1);
IplImage *dst = cvCreateImage(CvSize(src->width / 2, src->height / 2), src->depth, src->nChannels);
cvPyrDown(src, dst);
cvShowImage("Pyrdown",dst);
//IplImage *dst = cvCreateImage(CvSize(src->width * 2, src->height * 2), src->depth, src->nChannels);
//cvPyrUp(src, dst);
//cvShowImage("Pyrup", dst);
*/

///金字塔分割
/*导入cvpyrsegmention出现问题,应该include一些东西,缺失*/

///阈值
/*
IplImage *src = cvLoadImage("C:\\1.jpg", 1);
IplImage *dst = cvCreateImage(CvSize(src->width, src->height), src->depth, src->nChannels);
IplImage *r = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, 1);
IplImage *g = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, 1);
IplImage *b = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, 1);
IplImage *temp = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, 1);
IplImage *dst2 = cvCreateImage(cvGetSize(src), src->depth,1);
cvSplit(src, r, g, b, NULL);
cvAddWeighted(r, 1.0 / 3.0, g, 1.0 / 3.0, 0.0, temp);
cvAddWeighted(temp, 2.0 / 3.0, b, 1.0 / 3.0, 0.0, temp);
cvThreshold(temp,dst2, 100, 100, CV_THRESH_TRUNC);
cvShowImage("Threshold", dst2);
*/

///自适应阈值(只能单通道)
/*
IplImage *src = cvLoadImage("C:\\1.jpg", 0);
IplImage *dst = cvCreateImage(CvSize(src->width, src->height), src->depth, src->nChannels);
cvAdaptiveThreshold(src, dst, 200.0, 0, 0, 3, 5.0);
cvShowImage("AdaptThreshold", dst);
*/

///卷积
/*
IplImage *src = cvLoadImage("C:\\1.jpg", 1);
IplImage *dst = cvCreateImage(CvSize(src->width, src->height), src->depth, src->nChannels);
int data[] = { 5, 0, 0, 0, 5, 0, 0, 0, 5 };
CvMat kernel = cvMat(3, 3, CV_MAT_MAGIC_VAL, data);
cvFilter2D(src, dst, &kernel, cvPoint(-1, -1));
cvShowImage("Convolution", dst);
*/

///处理卷积边界
/*
int kernel = 11;
IplImage *src = cvLoadImage("C:\\1.jpg", 1);
IplImage *dst = cvCreateImage(CvSize(src->width+10, src->height+10), src->depth, src->nChannels);//构造大图像
cvCopyMakeBorder(src, dst, cvPoint((kernel - 1) / 2, (kernel - 1) / 2), IPL_BORDER_CONSTANT, cvScalarAll(0));
cvShowImage("Border", dst);
*/

waitKey(0);
cvReleaseImage(&src);
cvReleaseImage(&dst);
cvDestroyAllWindows();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  opencv C C++