本省网站建设建议微信营销的优势

diannao/2026/1/22 1:05:56/文章来源:
本省网站建设建议,微信营销的优势,联想电脑建设网站前的市场分析,python小学生入门教程转载自http://blog.csdn.net/lu597203933/article/details/14104505 灰度直方图 这次我从最基本的直方图讲起#xff0c;一维直方图#xff0c;至于二维等高维直方图#xff0c;仅作为了解#xff0c;后面有时间另开blog详解。 1#xff1a;首先我们给出一幅图 其中的数据… 转载自http://blog.csdn.net/lu597203933/article/details/14104505 灰度直方图 这次我从最基本的直方图讲起一维直方图至于二维等高维直方图仅作为了解后面有时间另开blog详解。 1首先我们给出一幅图 其中的数据假设对应一副灰度图片的灰度值则直方图的作用就是画出在bin范围内取值的个数如图左边的直方图---相当于我们word中的柱状图。 2在opencv中直方图的结构为: typedef struct CvHistogram { int     type;    // 不用管 CvArr*  bins;存放直方图在每一维上直方柱的具体数据由于存在多维直方图。如果是一维直方图那么bins就是一个一维的矩阵如果是二维直方图那么bins就是一个二维的矩阵等等。 float   thresh[CV_MAX_DIM][2]; /* 直方柱的划分 是统一划分的即均等划分的 */ float** thresh2; /*不均等划分可以自动设定每一个直方柱的取值范围。之所以是二级指针每一个柱的取值范围用一级指针表示又存在多个直方柱所以需要二级指针才能表示。每一个不在指定范围的值会被忽略掉。*/ CvMatND mat; /* 存放直方图的数据 */ } 3直方图的创建: CvHistogram* cvCreateHist( int dims, int* sizes, int type, float** rangesNULL, int uniform1); 其中: dims表示直方图的维度 sizes每一维上直方柱(bin)的数据 ----- 创建多大的矩阵  如一维则size[0] 256 二维:则size[0]256size[1] 256;; type  ---- 创建一个什么样的矩阵 直方图存储数据的方式: CV_HIST_ARRAY意味着直方图数据表示为多维密集数组CvMatND;         CV_HIST_TREE 意味着直方图数据表示为多维稀疏数组CvSparseMat.---- 大于0才开设相应的空间存储它高维的必选它 Ranges: 直方图在每一维度上的范围。         如果是一维则代码为:                                               Floatrange[] {0,255};                                               Float*ranges[]{range};         如果是二维则代码为:                                               Floatb_range[] {0,255};                                               Floatg_range[] {0,255};                                               Float*ranges[] {b_range, g_range}; uniform 该值为0时表示bin的范围是程序员自由设定的。当该值为非零时表示bin的划分是均等划分。 4创建一个直方图后避免里面存在一些随机值我们可以将其清除cvClearHist 代码: cvClearHist(hist);5计算图像的直方图  cvCalcHist         代码:cvCalcHist(imgBlue, hist, 0, 0);6将得到的直方图画出来: 其中用到了函数 cvGetMinMaxHistVaule, cvQueryHistValue_1D, cvFillConvexPoly.[cpp] view plaincopyprint?IplImage *DrawHistogram(CvHistogram*hist, float scaleX  1, float scaleY  1){  // 画直方图      float histMax  0;      cvGetMinMaxHistValue(hist, 0 , histMax, 0, 0);  // 取得直方图中的最值      IplImage *imgHist  cvCreateImage(cvSize(256 * scaleX, 64*scaleY), 8, 1);      cvZero(imgHist);  清空随机值      for(int i  0; i  255; i)      {          float histValue  cvQueryHistValue_1D(hist, i); // 取得直方图中的i值          float nextValue  cvQueryHistValue_1D(hist, i1);          int numPt  5;          CvPoint pt[5];          pt[0]  cvPoint(i*scaleX, 64*scaleY);          pt[1]  cvPoint((i1)*scaleX, 64*scaleY);          pt[2]  cvPoint((i1)*scaleX, (1 -(nextValue/histMax))* 64 * scaleY);          pt[3]  cvPoint((i1)*scaleX, (1 -(histValue/histMax))* 64 * scaleY);          pt[4]  cvPoint(i*scaleX, 64*scaleY);          cvFillConvexPoly(imgHist, pt, numPt, cvScalarAll(255));      }      return imgHist;    }   总结以上给出得到直方图的主要步骤直方图的创建—计算图像的直方图—画出直方图。以下给出完整的代码及运行的结果[cpp] view plaincopyprint?#include iostream  #include cv.h  #include highgui.h  #include cxcore.h  using namespace std;    IplImage *DrawHistogram(CvHistogram*hist, float scaleX  1, float scaleY  1){  // 画直方图      float histMax  0;      cvGetMinMaxHistValue(hist, 0 , histMax, 0, 0);  // 取得直方图中的最值      IplImage *imgHist  cvCreateImage(cvSize(256 * scaleX, 64*scaleY), 8, 1);      cvZero(imgHist);  清空随机值      for(int i  0; i  255; i)      {          float histValue  cvQueryHistValue_1D(hist, i); // 取得直方图中的i值          float nextValue  cvQueryHistValue_1D(hist, i1);          int numPt  5;          CvPoint pt[5];          pt[0]  cvPoint(i*scaleX, 64*scaleY);          pt[1]  cvPoint((i1)*scaleX, 64*scaleY);          pt[2]  cvPoint((i1)*scaleX, (1 -(nextValue/histMax))* 64 * scaleY);          pt[3]  cvPoint((i1)*scaleX, (1 -(histValue/histMax))* 64 * scaleY);          pt[4]  cvPoint(i*scaleX, 64*scaleY);          cvFillConvexPoly(imgHist, pt, numPt, cvScalarAll(255));      }      return imgHist;      }      int main()  {      IplImage *img  cvLoadImage(F:\\tongtong.jpg,1);      if(!img){          cout  No data img  endl;      }      int dims  1;      int sizes  256;      float range[]  {0,255};      float*ranges[]{range};      CvHistogram *hist  cvCreateHist(dims, sizes, CV_HIST_ARRAY, ranges, 1);      cvClearHist(hist);          //清除直方图里面的随机值       IplImage *imgBlue  cvCreateImage(cvGetSize(img), 8, 1);      IplImage *imgGreen  cvCreateImage(cvGetSize(img), 8, 1);      IplImage *imgRed  cvCreateImage(cvGetSize(img), 8, 1);      cvSplit(img, imgBlue, imgGreen, imgRed, NULL);   //将多通道图像分解        cvCalcHist(imgBlue, hist, 0, 0);    // 计算图像的直方图      IplImage *histBlue  DrawHistogram(hist);   // 将直方图中的数据画出来      cvClearHist(hist);        cvCalcHist(imgGreen, hist, 0, 0);        IplImage *histGreen  DrawHistogram(hist);      cvClearHist(hist);      cvCalcHist(imgRed, hist, 0, 0);      IplImage *histRed  DrawHistogram(hist);      cvClearHist(hist);        cvNamedWindow(show,0);      cvNamedWindow(B, 0);      cvNamedWindow(G, 0);      cvNamedWindow(R, 0);      cvShowImage(show,img);      cvShowImage(B,histBlue);      cvShowImage(G,histGreen);      cvShowImage(R, histRed);      cvWaitKey(0);      cvReleaseImage(img);      cvDestroyWindow(show);      cvReleaseImage(histBlue);      cvDestroyWindow(B);      cvReleaseImage(histGreen);      cvDestroyWindow(G);      cvReleaseImage(histRed);      cvDestroyWindow(R);      return 0;        }   运行结果/*这部分是后面添加的没有另开blog进行讲解了其实道理一样的*/下面简单介绍二维的情况要统计一个二维直方图二维坐标统计值这就是三维的结构就会变成一个3D图像其实不然。我们的处理技巧是将二维坐标分别作为x和y轴而统计值作为颜色值。如代码cvRectangle(imgHist, cvPoint(i*scaleX, j*scaleY), cvPoint((i1)*scaleX- 1, (j1)*scaleY - 1), CV_RGB(intensity,intensity,intensity), CV_FILLED); i和j分别代表坐标intensity即为统计值。Code[cpp] view plaincopyprint?IplImage *DrawHistogram2(CvHistogram*hist, float scaleX  1, float scaleY  1){  // 画直方图      float histMax  0;      cvGetMinMaxHistValue(hist, 0 , histMax, 0, 0);  // 取得直方图中的最值      IplImage *imgHist  cvCreateImage(cvSize(256 * scaleX, 256*scaleY), 8, 3);      cvZero(imgHist);  清空随机值      for(int i  0; i  255; i)      {          for(int j  0; j  255; j)          {              float histValue  cvQueryHistValue_2D(hist, i, j); // 取得直方图中的i值              int intensity  cvRound(histValue * 255 /histMax);              float nextValue  cvQueryHistValue_1D(hist, i1);              int numPt  5;              CvPoint pt[5];              pt[0]  cvPoint(i*scaleX, j*scaleY);              pt[1]  cvPoint(i*scaleX, (j1)*scaleY - 1);              pt[2]  cvPoint((i1)*scaleX - 1, (j1)*scaleY - 1);              pt[3]  cvPoint((i1)*scaleX - 1, j*scaleY);              pt[4]  cvPoint(i*scaleX, j*scaleY);              cvFillConvexPoly(imgHist, pt, numPt, cvScalarAll(intensity));              //cvRectangle(imgHist, cvPoint(i*scaleX, j*scaleY), cvPoint((i1)*scaleX - 1, (j1)*scaleY - 1), CV_RGB(intensity,intensity,intensity), CV_FILLED);              // (i1)*scaleX - 1代表下一个坐标点(i1)*scaleX的最后一点          }      }      return imgHist;  }    int main()  {      IplImage *img  cvLoadImage(F:\\baboon.jpg,1);      if(!img){          cout  No data img  endl;      }      int dims  2;      int sizes[2]  {256, 256};  // 创建多大的矩阵      float b_range[]  {0,255};    // 矩阵的取值范围      float g_range[]  {0, 255};      float*ranges[]{b_range, g_range};      CvHistogram *hist  cvCreateHist(dims, sizes, CV_HIST_ARRAY, ranges, 1);      cvClearHist(hist);          //清除直方图里面的随机值       IplImage *imgBlue  cvCreateImage(cvGetSize(img), 8, 1);      IplImage *imgGreen  cvCreateImage(cvGetSize(img), 8, 1);      IplImage *imgRed  cvCreateImage(cvGetSize(img), 8, 1);      IplImage *planes[]  {imgBlue, imgGreen};  // 二维是这样处理的********      cvSplit(img, imgBlue, imgGreen, imgRed, NULL);   //将多通道图像分解            cvCalcHist(planes,hist, 0, 0);      IplImage *bg_image   DrawHistogram2(hist);      cvNamedWindow(show,0);      cvShowImage(show,img);      cvNamedWindow(bg_image);      cvShowImage(bg_image,bg_image);      cvWaitKey(0);      cvReleaseImage(img);      cvReleaseImage(bg_image);      cvDestroyWindow(show);      cvDestroyWindow(bg_image);      return 0;        }  Result 作者小村长  出处http://blog.csdn.net/lu597203933 欢迎转载或分享但请务必声明文章出处。 新浪微博小村长zack, 欢迎交流

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/89452.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信网站开发流程戚墅堰网站建设

多重纹理和纹理组合器 本文主要介绍OpenGL中两种技术的使用方法:多重纹理技术和纹理组合器技术,最终根据参考【2】中的代码,实现了两个简单的演示DEMO,其中使用到了《八叉树颜色量化、BMP、TGA文件解析》篇章中提供的图像解析类。…

找活做的网站wordpress首页白屏

1、什么是视图视图是虚拟的表,是一个存储的查询,虽然不需要实际的物理存储,但是也被看作是一个数据库对象;它与包含数据的表不一样,它不包含任何列或数据,它只是包含使用时动态检索数据的查询,并…

中英文网站建设企业网站未收录

📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…

织梦系统网站地图模板下载中国最好的外贸公司

1.最大公约数和最小公倍数的组合问题 (1)在调试的过程中涉及到很大的数据,我们我们在定义变量的时候定义为long long类型 (2)这个里面我们自定义了max2用来求最大公约数,min2用来求最小公倍数 &#xff0…

网站站做地图软件西安网站工作室

由于大量数据存储在数据库同一张表中,后期性能和扩展会受到影响。所以需要进行表分区,因为它可以将大表分成较小的表,从而减少内存交换问题和表扫描,最终提高性能。庞大的数据集被分成更小的分区,更易于访问和管理。 …

东莞网站设计案例阿里建站价格

目录 AQS简介AQS的设计思路AQS的核心组成部分 状态(State)同步队列(Sync Queue)条件队列(Condition Queue) AQS的内部实现 节点(Node)锁的获取与释放 独占锁共享锁 条件变量 AQS的应…

谷歌网站推广费用软装设计网站有哪些

void类型修饰符(type specifier)表示“没有值可以获得”。因此,不可以采用这个类型声明变量或常量。void 类型可以用于下面各小节所描述的目的。void用于函数声明没有返回值的函数,其类型为 void。例如,标准库函数 perror() 被声明为以下原型…

关于建设集团公司网站的报告众包网站建设

按显示技术尺寸来分,主要分为大尺寸和小尺寸(10寸以下),TFT-LCD行业下游主要是各类型消费电子,包括PC显示器,液晶电视,智能手机等。 TFT-LCD面板产业链 资料来源:共研产…

做公众好号的网站吗黄冈做学生互评的网站

这开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题,有需求都可以加群群内,可以解决你的问题。加群请联系 liuaustin3 ,(共1830人左右 1 2 3 4 5&#xf…

做足球推荐网站能赚钱吗1.网站建设基本流程是什么

代码框架 // 在数组nums将下标从left到right中进行从小到大排序// 原理是先将一个元素排好序,然后将其他的元素排好序void sort(int[] nums, int left, int right) {if (left > right) {return;}// 对数组nums[left,right]进行切分,使得nums[left,p-1…

台州企业网站搭建价格网站关键词代码位置

目前的技术存在的问题?   尽管DCOM和IIOP都是固定的协议,业界还没有完全转向其中任何一个协议。没有融合的部分原因是文化的问题所致。而且在当一些组织试图标准化一个或另一个协议的时候,两个协议的技术适用性就被提出质疑。传统上认为DC…

正规网站制作公司哪家好多个wordpress站点互相

在linux服务器环境下,可以使用cat /proc/cpuinfo命令查看当前CPU的核数等信息。 cat /proc/cpuinfo 字段解析 /proc/cpuinfo 是一个特殊的文件,在 Linux 系统中提供有关 CPU 的详细信息。它实际上是一个伪文件系统中的文件,通过它可以获取到…

大观网站建设seo知识分享

在本文中,我们将介绍五种方法,这些方法可以使用有效的编码来帮助垃圾回收器减少分配和释放内存的CPU时间,并减少GC开销。 较长的GC通常会导致我们的代码在回收内存时被停止(也称为“停止世界”)。 一些背景 GC的建立…

网站建设中html网页长沙 网站设计 公司价格

要在 CentOS 7 下使用 Ansible Playbook 实现 MySQL 8.0.34 的二进制安装,需要先下载 MySQL 8.0.34 的二进制包,并将其上传至目标服务器。 以下是基于二进制包安装的一个简化示例 Playbook: --- # mysql8_binary_install_playbook.yaml- nam…

我想花钱做网站徐州seo公司

以下是在学习和使用spark过程中遇到的一些问题,记录下来。 1、首先来说说spark任务运行完后查错最常用的一个命令,那就是把任务运行日志down下来。 程序存在错误,将日志down下来查看具体原因!down日志命令:yarn logs -application…

网站建设会提供哪些服务备案查询入口

引言 随着人工智能技术的迅猛发展,人工智能生成内容(AIGC)技术已经逐渐走进人们的视野。AIGC技术是指利用人工智能技术生成各种形式的内容,如文字、图像、音频、视频等。这种技术不仅可以提高内容生产效率,还可以创造…

网站的建设怎么弄外贸网站建设知识 列表

面试技术栈 —— 2024网易雷火暑期实习真题 1. 最长递增子序列。2. 集中限流和单机限流你觉得哪个好?3. redis部署服务器配置,为什么不用哨兵?4. 讲讲分布式session的原理。5. 数据库:表数据量大了,如何分表&#xff1…

自学wordpressseo网址查询

1.docker的简介 1.1docker是什么 用一句话来说docker就是一个新一代虚拟化技术 Docker是一种开源的平台,用于开发、交付和运行应用程序。它允许开发人员将应用程序和它们的依赖打包在一个容器中,然后部署到任何支持Docker的环境中。Docker的主要特点包括…

免费ip代理服务器苏州seo推广公司

关卡名 认识回溯思想 我会了✔️ 内容 1.复习递归和N叉树,理解相关代码是如何实现的 ✔️ 2.理解回溯到底怎么回事 ✔️ 3.掌握如何使用回溯来解决二叉树的路径问题 ✔️ 回溯可以视为递归的拓展,很多思想和解法都与递归密切相关,在很多…

网站开发者工具post建筑学院app网站

chrome浏览器使用 Console(控制台) 了解如何:打开DevTools Console(控制台),堆叠冗余消息或在自己的行上显示它们,清除或保持输出或将其保存到文件,过滤输出,以及了解其他Console(控制台)设置。 TL;DR 以专用面板形式,或作为任何其他面板的抽屉式面板的形式,打开Console…