学习opencv第四章第三题
发布日期:2022-01-31 02:37:27 浏览次数:48 分类:技术文章

本文共 3084 字,大约阅读时间需要 10 分钟。

#include "cv.h"#include "highgui.h"#pragma comment(lib,"cv.lib")#pragma comment(lib,"highgui.lib")#pragma comment(lib,"cxcore.lib")void my_mouse_callback(int event,int x, int y, int flag, void* param);CvRect box = cvRect(0,0,0,0);bool draw_box = false;bool high_light = false;bool b_hist = false;void drawbox(IplImage* img, CvRect rect){	cvRectangle(img,cvPoint(rect.x, rect.y),cvPoint(rect.x + rect.width, rect.y+rect.height),cvScalar(0,0,0));		//cvShowImage("Box",img);}void highlight(IplImage* img, CvRect rect){	if (high_light == true)	{		//cvSetImageROI(img,rect);		for (int y = rect.y; y
imageData+y*img->widthStep); for (int x = rect.x; x
nChannels + 1] = 150; ptr[x*img->nChannels + 2] = 110; } } } cvShowImage("Box",img);}void drawhist(IplImage* img, CvRect rect){ cvSetImageROI(img,rect); IplImage* b_plane = cvCreateImage(cvSize(rect.width,rect.height),img->depth, 1); IplImage* g_plane = cvCreateImage(cvSize(rect.width,rect.height),img->depth, 1); IplImage* r_plane = cvCreateImage(cvSize(rect.width,rect.height),img->depth, 1); cvSplit(img,b_plane,g_plane,r_plane,0); IplImage* planes[] = {b_plane,g_plane,r_plane};//元素都是指针,所以类型要用指针的指针 cvResetImageROI(img); //每个通道分成8个等级,也就是每个通道都有8个bins int b_bins = 8; int g_bins = 8; int r_bins = 8; int hist_size[] = {g_bins,g_bins,r_bins}; //每个通道的变化范围 float b_ranges[] = {0,255}; float g_ranges[] = {0,255}; float r_ranges[] = {0,255}; float* ranges[] = {b_ranges,g_ranges,r_ranges};//元素都为指针,所以要用指针的指针类型 CvHistogram* hist = cvCreateHist(3,hist_size,CV_HIST_ARRAY,ranges,1); cvCalcHist(planes,hist,0,0); //获取直方图统计的最大值,进行显示直方图 float max_value; cvGetMinMaxHistValue(hist,0,&max_value,0,0); //直方图图像的设计 int height = 240; int width = b_bins*g_bins*r_bins*6; //cvNamedWindow("hist",CV_WINDOW_AUTOSIZE); IplImage* imgHist = cvCreateImage(cvSize(width,height),8,3); int b_width = width/(b_bins*g_bins*r_bins); //获取直方图的每一个分量,并用相应的颜色绘制直方图 for (int r = 0; r
depth,image->nChannels); cvCopy(image,copyImage); cvNamedWindow("Box",CV_WINDOW_AUTOSIZE); //cvNamedWindow("histprom",CV_WINDOW_AUTOSIZE); cvShowImage("Box", copyImage); //注册鼠标事件 cvSetMouseCallback("Box",my_mouse_callback,(void*)copyImage); while (1) { cvCopy(image,copyImage);//一定要在这里,画图是画在图像的副本上。负责,画出的图是连着的 if (draw_box == true) { drawbox(copyImage,box); cvShowImage("Box", copyImage); } if (high_light == true) { highlight(copyImage, box); } if (b_hist == true) { drawhist(image,box); } if (cvWaitKey(15) == 27) break; } //开始 //cvWaitKey(0); //cvReleaseImage(&image); //cvDestroyAllWindows(); return 1;}void my_mouse_callback(int event,int x, int y, int flag, void* param){ switch (event) { case CV_EVENT_LBUTTONDOWN: high_light = false; draw_box = true; b_hist = false; box = cvRect(x,y,0,0); break; case CV_EVENT_MOUSEMOVE: if (draw_box == true) { box.width = x - box.x; box.height = y - box.y; } break; case CV_EVENT_LBUTTONUP: draw_box = false; high_light = true; b_hist =TRUE; //drawbox((IplImage*)param, box);//这句话的作用主要是将上次画在image中的矩形复制给副本,这样就能保留显示上一次所画矩形 break; }}

转载地址:https://blog.csdn.net/LJH0600301217/article/details/8655329 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:opencv第四章第二题
下一篇:距离变换的理解

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年03月13日 13时25分14秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

java国际化bundle_java语言国际化--ResouceBundle、struts 2019-04-21
java图片延迟加载_jQuery实现图片延迟加载 2019-04-21
java开发加入购物车功能_java web开发——购物车功能实现 2019-04-21
Java虚拟机不能满足_深入理解Java虚拟机--读书笔记1/3 2019-04-21
python 协程 asyncio_python – asyncio.as_completed是否会产生期货或协同程序? 2019-04-21
java设定xml文件的encoding_配置web-xml解决中文乱码问题,及各种乱码问题集结 2019-04-21
hanlp java api_java分词工具hanlp介绍 2019-04-21
nginx php 源码安装,Nginx1.12.2加php7.2.0的编译安装 2019-04-21
php 删除字节,php – 删除无效/不完整的多字节字符 2019-04-21
php 实现版本号对比,如何在PHP中实现比较版本号 2019-04-21
php sql 给数据库追加内容,php如何向数据库中的某串数据后追加内容【急】 2019-04-21
php微信小程序获取用户信息,微信小程序授权获取用户详细信息openid的实例详解... 2019-04-21
Java三元运算和if,Java三元运算符与<JDK8兼容性中的if / else 2019-04-21
graphql-php enum,php – 如何在不写长查询的情况下查询所有的GraphQL类型字段? 2019-04-21
php date 函数用法,php中date()日期时间函数使用方法 2019-04-21
php除法获取整数和余数,PHP除法取整和取余数 2019-04-21
java迷宫路径,Java中的迷宫路径查找器 2019-04-21
php substr cnblog,php中substr用法示例 2019-04-21
php链接怎么截取,PHP 截取网页中的固定种子链接 2019-04-21
iis运行不起来php报500,解决IIS上安装thinkphp6运行报500错误 2019-04-21