Opencv第一个简单程序

来源:互联网 发布:网络直播的产生与发展 编辑:程序博客网 时间:2024/06/01 14:23

参照《学习Opencv》 第四章:

运行时,按A随机增加20个小圆圈,鼠标点击一次图像则增加一个圆圈,三个滑动条调节圆圈颜色,按ESC退出图像。

// opencv_second.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "stdlib.h"#include "cv.h"#include "highgui.h"int count;   CvScalar color;IplImage* img;int posR, posG, posB;void on_track(int pos);//滑动条处理函数void on_mouse(int event, int x, int y, int flags, void* param);//鼠标处理函数int _tmain(int argc, _TCHAR* argv[]){printf("hot keys: \n""\tESC - quit the program \n""\ta - add 20 points\n");count = 20;//初始化显示的圆圈数color = CV_RGB(100, 100, 100);//初始化圆圈的颜色posR = posG = posB = 100;//初始化三个滑动条的值img = cvCreateImage(cvSize(400, 400), 8, 3);//创建图像(尺寸,像素深度,像素通道)cvNamedWindow("samples");//创建名为“samples”的窗口,该窗口大小随图像的大小而改变cvSetMouseCallback("samples", on_mouse, 0);//注册鼠标处理程序,调用on_mouse函数cvCreateTrackbar("B", "samples", &posB, 255, on_track);//创建名为B的滑动条,最大值为255,回调函数on_trackcvCreateTrackbar("G", "samples", &posG, 255, on_track);cvCreateTrackbar("R", "samples", &posR, 255, on_track);on_track(posR);//将初始值表现在图像上(如果没有这一句,显示的只是一个窗口)for (;;)//进入循环{int key = cvWaitKey(0);//中止程序的等待按键bool exit = false;//退出标志位switch (char(key)){case '\x1b'://若按下ESC,则置标志位为1printf("Exiting...\n");exit = true;case 'a'://若按下a,则增加20个圆圈count += 20;on_track(posR);//刷新图像,实际该函数并没有用到参数posR}if (exit)//若标志位为1,则退出循环break;}cvReleaseImage(&img);//释放图像资源cvDestroyWindow("samples");//销毁窗口system("pause");return 0;}void on_track(int pos){cvZero(img);//初始化图像,值为0CvPoint center;//坐标结构体color.val[0] = posR;//获取滑动条上的值color.val[1] = posG;color.val[2] = posB;CvRNG rng = cvRNG(0xffffffff);//随机数种子for (int i = 0; i < count; i++)//随机生成count个圆圈{center.x = cvRandInt(&rng)%img->width;//随机生成的值不会超过宽和高center.y = cvRandInt(&rng)%img->height;cvCircle(img, center, 2, color);//该函数产生圆圈}cvShowImage("samples",img);//显示图片}void on_mouse(int event, int x, int y, int flags, void* param){if (event == CV_EVENT_LBUTTONUP)//如果鼠标左键按下后松开{count++;CvPoint center;center.x = x;//记录下鼠标点击的坐标center.y = y;cvCircle(img, center, 2, color);//再点击处显示圆圈cvShowImage("samples",img);}}


0 0
原创粉丝点击