精华内容
下载资源
问答
  • 介绍几个 可以用在 C/C++ 语言里的画函数图像的库
    千次阅读
    2019-10-04 10:48:40

    gnuplot

    http://stahlke.org/dan/gnuplot-iostream/
    git clone https://github.com/dstahlke/gnuplot-iostream.git

    plplot

    https://plplot.sourceforge.net
    vcpkg 已经包含这个包了。可以直接 vcpkg install plplot

    dislin

    https://www.mps.mpg.de/dislin 商业用途需付费。

    vtk

    https://www.vtk.org/ 3D 功能很强,也可以用来画普通的 2D 函数图像。
    vcpkg 已经包含这个包了。可以直接 vcpkg install vtk

    DPlot Jr

    https://www.dplot.com/software-developers.htm

    MathGL

    https://sourceforge.net/projects/mathgl/

    PGPlot

    http://www.astro.caltech.edu/~tjp/pgplot/

    下面几个是 qt 相关的。

    Qwt、QwtPolar、QwtPlot3D

    https://qwt.sourceforge.io/
    http://qwtpolar.sourceforge.net/
    http://qwtplot3d.sourceforge.net/

    QCustomPlot

    http://www.qcustomplot.com/

    最后2个是 wxWidgets 上的。

    istiChartLib

    https://firagiel.com/web/technical-software/istichartlib/

    wxFreeChart

    http://wxcode.sourceforge.net/components/freechart/

    更多相关内容
  • C++实现数学函数图形绘制.doc
  • C++画数学函数图象

    热门讨论 2013-02-05 21:08:32
    1. vs2008里弄了一个画数学函数的类,基本的函数都可以画,当然复杂的也可以,只是函数本身需要调用者设计,已经变量的范围 2. 最后的图象提供两种方式输出,一个是bmp文件,一个是gif图象,gif需要注意它的256种...
  • 在传统的数字图像处理当中,边缘检测与形态学为两门非常重要的技术,在笔者的第一篇文章中已经重点介绍了各种边缘检测算子,因此这次笔者将结合一些较为简单的形态学算法,使用Matlab为大家介绍一个很有意思的测量...

    8729ac64647b3daa9afabb5721c57e35.png

    在传统的数字图像处理当中,边缘检测形态学为两门非常重要的技术,在笔者的第一篇文章中已经重点介绍了各种边缘检测算子,因此这次笔者将结合一些较为简单的形态学算法,使用Matlab为大家介绍一个很有意思的测量目标尺寸的小项目,效果如下

    76281a83436ea5ea1497e15cd244cf22.png
    图1 效果图

    1.测距原理

    在数字图像处理当中我们可知,在计算机眼中,每一张图片都实际上表现为一个庞大的矩阵,若在不知道测距物体距离的情况下,是不可能对图像中物体进行大小(size)的测量计算的,因此我们需要引入一个和比例尺类似的概念:pixels per metric ratio

    意为给定度量单位的像素比率,在本篇文章中我们将给点度量单位设定为英寸(inch),可以理解为参考物的作用`,给定图像中一参考物大小,便可测得其它目标物体的尺寸大小

    其中,参考物需要有两个重要性质:

    性质1:参考物尺寸

    我们应该知道物体的尺寸(就是宽或高)包括测量的单位(如mm、英寸等)

    性质2:易于识别

    我们应该能够很容易地在图片中找到参照物体,无论是基于物体的位置(例如,参考物体总是放在图片的左上角)还是通过外观(例如,独特的颜色或形状,不同与图片中的其他物体)。无论是哪种情况,我们的参照物都应该以某种方式具有唯一的可识别性。

    在本篇文章中,我们将硬币作为我们的参考物,已知其尺寸大小为1 inch*1 inch,并且为满足性质2,我们确保其始终置于图像最左侧

    47a9a1c72e171b6d0d1e820e624d847d.png
    图2 测距原理

    因此我们得到给定度量单位像素比例计算公式:

    pixels per metric ratio = 硬币像素数/物体实际尺寸

    已知硬币长宽均为1英寸,假设其在图像中像素宽为157px(基于其关联的检测框),得:

    pixels per metric ratio = 157px/1.000in = 157px/in

    通过使用这一比例,我们便可计算图像中其它物体的尺寸大小信息了

    2.利用计算机视觉测量物体的大小

    现在我们理解了pixels per metric ratio比率的含义,但我们还需要对目标进行检测进行检测框长宽的提取,这一步我们将用到诸如灰度图变换、边缘检测、形态学等算法

    首先我们定义硬币长宽,并且读取原始图像

    coin_width

    71833abfeca271f5ae8870c6517dd423.png
    图3 原始图像

    之后我们使用rgb2gray(image)函数进行灰度图转换,并且通过imfilter(f, w,boundary_options)函数对图像进行高斯滤波,其中w为滤波器,由fspecial(type,parameters,sigma)生成,其中将type设为"gaussian",sigma设为1,代码及效果如下

    %转换为灰度图像
    

    c473314556b741d4129e04ba68e212aa.png
    图4 高斯图像

    对高斯滤波后的图像进行Canny边缘检测,使用edge(I,method,threshold),,其中I为输入图像,method为指定算法,文章中使用"canny"进行边缘检测,而threshold为阈值,通常设为0.1,具体想了解各边缘检测算法详解请看这篇文章

    Rustle:数字图像图像处理:边缘检测(Edge detection)​zhuanlan.zhihu.com
    cccc86d5bfc878461044b19ef078d501.png

    边缘检测代码及效果如下所示

    I3

    a726b56f8353b1f0c2a81681eb6bb422.png
    图5 Canny边缘检测图像

    通过观察边缘图像可以发现各目标内部还具有较细的纹理,对后续八连通区域的检测造成较大干扰,因此我们可以通过孔洞填充操作去除内部纹理,其次提取孔洞填充图像外围边缘,最后使用形态学算法去除较小物体,具体代码如下:

    % 孔洞填充
    

    其中bwperim函数与传统的边缘检测概念不同,边缘检测为提取图像边缘特征图像,而bwperim只保留目标最外层边缘,bwareaopen(I4,150)意为去除图像中小于150px的八连通区域(至于为什么选择150,emmmm笔者是把它当成参数直接人为调的哈)

    最后效果如下:

    075ccc1f980785afe17bdcb3e0b396d6.png
    图6 孔洞填充图像

    4cb7ede9da37584e83ade1e0bd7506f4.png
    图7 提取外围边缘

    78e1b3f7a6f5cbb3f7b08920c50db660.png
    图8 去除小物体

    至此,我们便完成了对图像的处理阶段,接下来我们需要对物体进行标记,并且绘制相关的检测框图,其中我们使用 [labelpic,num] = bwlabel(I5,8)来对图像从左至右对目标进行标记,并配合find函数进行特定目标的操作,如接下来我们需要计算pixels per metric ratio,我们需要将最左边硬币目标提取出来,我们可以使用以下代码进行提取

    [

    其中r,c分别为目标对象(coin)的八连通行列坐标,然后我们使用函数minboundrect(c,r,'p')将得到的r,c进行最小外接矩形的计算,其中参数p表示按边长最小原则进行计算,最后使用minboxing()函数计算最小外接矩形的长宽,具体代码如下:

    % 获取标记物体最小外接矩形坐标点
    

    计算pixels per metric ratio:

    % 单位英寸像素点比例计算
     
    其中minboundrect与minboxing函数并不是Matlab官方函数,具体代码会在文末给出

    我们使用同样的原理进行各目标最小外接矩形的计算,并使用line函数在图像中绘制出矩形框与中点连线

    for 

    最后,我们根据pixels per metric ratio与最小外接矩形长宽计算目标实际尺寸,并通过text函数在图像中进行显示,代码如下:

    line

    好了现在我们完成了所有工作,最终的效果图便是这样啦

    76281a83436ea5ea1497e15cd244cf22.png
    图9 效果图

    最后在放两个动图让大家看看效果吧

    103881f659584426b3a19c66eea979b1.gif
    图10 效果演示

    a995182429ed710e7072548e1d4be8d6.gif
    图11 效果演示

    如上图所示,我们已经成功的计算出图片中每个物体的尺寸

    然而,并非所有的结果都是完美的,可能的原因:

    1. 拍摄的角度并非是一个完美的90°俯视。如果不是90°拍摄,物体的尺寸可能会出现扭曲
    2. 没有使用相机内在和外在参数来校准。当无法确定这些参数时,照片很容易发生径向和切向的透镜变形。执行额外的校准步骤来找到这些参数可以消除图片中的失真并得到更好的物体大小的近似值

    参考

    1.Measuring size of objects in an image with OpenCV

    代码如下:

    coin_width

    minboundrect函数

    function

    minboxing函数

    function

    码字不易,各位看官点个赞再走呀嘻嘻嘻

    展开全文
  • python绘制函数图像

    2019-01-23 20:19:43
    python绘制函数图像代码,NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。 NumPy 的前身 Numeric 最早是由 Jim Hugunin 与其它...
  • mfc绘制数学函数图像

    2020-07-18 22:52:49
    1)可绘制常见的数学函数曲线,如三角函数、指数函数、幂函数等。 2)通过菜单选择不同的函数曲线类型,可以通过对话框指定该函数的参数,如Xa中的幂a的具体设置,sin(ax+b)中的参数a、b的设置。 3)绘制数学曲线时...
  • 下面就是正文:经图像信息输入系统获取的原图像中通常都含有各种各样的噪声和畸变,大大影响了图像的质量。因此,在对图像进行分析之前,必须先对图像质量进行改善。通常,采用图像增强的方法对图像质量进行改善。...

    e24c77b81a0cab09a0dfd609b2d3e11b.png

    前面时间因为一些事没更像,国庆节本猿终于有时间闲下来写点文章了。下面就是正文:

    经图像信息输入系统获取的原图像中通常都含有各种各样的噪声和畸变,大大影响了图像的质量。因此,在对图像进行分析之前,必须先对图像质量进行改善。通常,采用图像增强的方法对图像质量进行改善。图像增强不会考虑引起图像质量下降的原因,而是将图像中感兴趣的特征有选择地突出,并衰减不需要的特征。图像增强的目的是为了改善图像的视觉效果,提高图像的清晰度和工艺的适应性,以及便于人与计算机的分析主处理,以满足图像复制或再现的要求。

    图像增强的方法分为空域法和频域法两类。

    1.频域法就是我们前面讲的在图像的某个变换域内对整个图像进行操作,对图像进行滤波等处理,并修改变换后的系数,如傅里叶变换、DCT变换等的系数,然后再进行反变换,便可得到处理后的图像。

    2.空域法就是我们前面讲的对图像中的各个像素点进行操作,这就是这部分我们要讲述的内容。

    一,灰度变换增强基础

    我们先介绍一些灰度变换增强的基础知识

    1.像素的选择函数

    impixel 函数,作用是获取图像的像素值,基本语法如下:

    p=impixel(I)    用鼠标在图像上选取所点击图像处的像素值
    p=impixel(I,c,r);  c r表示指定位置的索取像素的位置 

    当在脚本编辑器中输入以下内容并运行时

    I=imread('mm.jpg');
    p=impixel(I)  

    我们注意到,在显示的图像上,鼠标的图标会变成空心十字,当我们去点击图像上的某一个像素点,选择完毕后按enter键,函数将会返回被选图像的函数数据,如下:

    p =
    
        72    24    22

    2.线段上像素分布的绘制

    同样的 improfile 函数的作用是创建图像强度曲线 ,基本语法如下:

      c=improfile(n)    在当前图像上,使用鼠标进行选择n个像素点,按enter键可以返回像素的强度曲线
    c=improfile(I,xi yi)   创建指定线段的像素强速曲线,向量xi yi指定线段的端点
    [cx cy c]=improfiel(I,)返回鼠标指定线段上的像素点坐标以及像素值

    运行如下代码:

    I=imread('a1.jpg');
    imshow(I) 
    improfile

    待鼠标变为十字之后,选择一个线段端点,延长直线,选择另一个线段端点,按enter键,即可生成线段灰度值的分布图。

    e6cf9de75b60aca28f293489a4b604e1.png

    3.图像等高线

    我们用imcontour函数来显示图像的等高线。

    运行如下代码

    J = imread('ll.png');
    I=rgb2gray(J);
    imshow(I)
    figure;
    imcontour(I);

    下面是原图和效果

    90eb9dd33f6747ad8e317eb6bdf020f2.png

    814139976b41acc623fd75bb8f88f45a.png

    需要注意的是,imcontour函数处理的对象需要先转化为二维的灰度图,再求等高线图。

    4.统计概要

    此外 ,还可以使用图像处理工具箱中的mean2O函数、sd20函数和 cor20数,对图像的标准统计特性进行计算。

    mean2:计算矩阵元素的平均值

    std2:计算矩阵的标准偏差

    corr2:计算两个矩阵的相关系数

    这几个函数就留给大家自行学习,再发一下matlab官网网址,输入对应的函数,就可以直接进行学习了。

    1b3cba7810c0391b33e39c08d4d1531d.png
    https://ww2.mathworks.cn/​ww2.mathworks.cn

    二,直接灰度变换

    1.灰度线性变换

    5b551f995b2198cb05debccc0fe58e67.png

    程序示例:

    J=imread('F.jpg');
    I=rgb2gray(J);
    colormap;imshow(I);
    H=imadjust(I,[0 1],[1 0],1.5); %设置图像倒置参数
    figure;subimage(H)  %显示倒置后的图像

    40dd1a3e71245a0655d3a58e921f1119.png
    原图像的灰度图

    35960d31418a2e16a99b22dcb6736998.png
    灰度倒置后的图像

    虑及各位的阅读疲劳,今天的更新就到这里,明天会接着更新,感谢诸君厚爱,收藏之前不要忘了点赞哦。

    展开全文
  • 绘制函数图像

    2018-04-27 21:14:11
    在linux中绘制函数图像,用c++编写。大家可以参考。。。。
  • C++绘图函数

    2012-05-25 11:21:10
    easyx库中常用的函数,包含绘图环境相关函数,颜色表示及相关函数绘制图形相关函数,文字输出相关函数图像处理相关函数
  • 一、使用R语言自带的函数绘制图像R语言本身就已经内置了许多绘图函数,能够满足较为基本的绘图需求,例如hist()、boxplot()、spineplot()等等。如果我们想要将使用这些函数绘制图像汇总在一张图中,需要使用...

    在使用R语言进行数据可视化的时候,常常需要将多张统计图表绘制在同一张图上面,从而更高效地传递信息,下面我们就来一起看看具体如何实现。

    一、使用R语言自带的函数绘制的图像

    R语言本身就已经内置了许多绘图函数,能够满足较为基本的绘图需求,例如hist()boxplot()spineplot()等等。如果我们想要将使用这些函数绘制的图像汇总在一张图中,需要使用split.screen()screen()函数,具体方法如下:

    1. 步骤一:分割屏幕split.screen()

    顾名思义,split.screen()函数是用于分割屏幕的,它需要传入一个形似c(nrow, ncol)的参数,意为将屏幕分割为nrow行,ncol列;分割完成后函数会返回一个整数(integer)型向量,长度等于nrow * ncol,即为分割之后屏幕的每一个部分对应的“编号”。这些“编号”将用于传入screen()函数,进行后续的绘图工作。

    2. 步骤二:指定绘图位置screen()

    分隔完屏幕之后,我们需要首先指定一张子图的位置,使用screen()函数,传入之前分割屏幕时返回的“编号”, 便完成了指定。

    3. 步骤三:绘图

    完成指定子图位置之后,便可以进行正常的绘图工作,使用hist()boxplot()spineplot()等函数进行绘图,注意每绘制完一张图就需要使用screen()来更改绘图的位置。下面我们来看一个实例:

    这里我们使用R语言内置的数据集AirPassengerscars来进行演示:

    # 分割屏幕
    > split.screen(c(2, 1))
    > [1] 1 2
    
    # 绘制第一个图
    > screen(1)
    > plot(cars)
    
    # 绘制第二个图
    > screen(2)
    > plot(AirPassengers)
    
    # 结束绘图
    > dev.off()

    a162d85f762d637f2528aa339d2a05d0.png
    代码运行结果

    二、使用ggplot2绘制的图像

    ggplot2是非常流行的R语言可视化包,功能极为强大,能够绘制众多复杂的统计图表。在同一张图中显示多张ggplot2图像同样也需要借助第三方的R包——ggpubrggpubr包中的ggarrange()可以方便地将多张图整合在一张上面。其常用的参数如下:ggarrange(..., ncol = NULL, nrow = NULL)

    其中...是按顺序依次列出的需要整合的图表, ncol是列数,nrow是行数。可以看出,相比于R语言自带函数绘制的图像,在ggarrange()的帮助下,ggplot2绘制的图像整合起来更加方便,下面我们看一个实例,依然使用R语言内置的数据集cars

    # 绘制第一个图像
    > p1 = ggplot(cars, aes(x = speed, y = dist)) +
        geom_line(size = 1) +
        labs(x = "speed", y = 'dist')
    
    # 绘制第二个图像
    > p2 = ggplot(cars, mapping = aes(x = speed, y = dist)) +
        geom_point(size = 1, col = 'darker') + 
        labs(x = "speed", y = 'dist') 
    
    # 整合两张图
    > ggarrange(p1, p2, ncol = 2, nrow = 1) 

    88d854a3acf8983a24fe953ea5b43d80.png
    代码运行结果
    展开全文
  • 做出函数图像。快速 简便支持标准直角坐标、极坐标采用剪枝算法,具备极高绘制精度、速度,同时自动过滤间断点、无穷点。自动上色、自动编号、自动筛选有效定义域。
  • 利用VS建立MFC基于对话框的工程,其他默认。之后添加两个文本输入控件,两个按钮控件,并为文本控件建立两个...找到:OnPaint() 函数,在该函数最后的 }前添加实现代码。本资源以上传全部解决方案文件,可直接运行使用。
  • C++实现的三次贝塞尔曲线绘制,可拖动控制点修改曲线形状,包含源代码和可执行文件,VS2008的工程。 C++实现的三次贝塞尔曲线绘制,可拖动控制点修改曲线形状,包含源代码和可执行文件,VS2008的工程。
  • - 余弦函数 - 正弦函数 #include<iostream> #include<cmath> #define PI 3.1 #define tow_PI 6.2 using namespace std; int main() { double y,x; for(y=1;y>0;y-=0.1) { double cx=asin(y);...
  • VS2013写的,MFC对话框程序,函数图像清晰漂亮,参数可调,包含全部源码,初学者可用于参考。 VS2013写的,MFC对话框程序,函数图像清晰漂亮,参数可调,包含全部源码,初学者可用于参考。
  •  更新完第一篇C++介绍文章发现太干了,直接介绍定义还不如看书学得快,因此在接下来的文章中会将我曾经刷过的题目整理上来,在注释中不断引入新的知识点,函数,数据结构,遇到的坑等等,同时也会对题目进行解析,...
  • 360截图20200320092354010.jpg (34.52 KB, 下载次数: 4)2020-3-20 14:22 上传春分,是春季九十天的中分点。二十四节气之一,每年农历二月十五日前后(公历大约...利用mPython设计一个一次函数图像,现在分享给大家!3...
  • C++ OpenCv中提供的函数calcHist()可以很方便的帮助我们统计一幅8Bit图像的直方图,但是有时候我们不想用OpenCv提供的函数来统计,想自己根据自己的需求来做一个统计,那么看这个教程就对了,学会这种方法不仅是8Bit...
  • 简易版C++,MFC在直角坐标系中绘制数学函数(支持上下左右,放大缩小),文件中代码注释很多,有助于你了解该程序!
  • //画函数 x*x+x for (float x = 0; x ; x+=0.01) { ml_Point point(x, sqrtf(x*x+x)); unsigned char rgb[3]; getRandomRGB(rgb); if (!drawPoint(point.x, point.y, rgb)) { break; } Sleep(1); ...
  • 数学函数图像绘制

    2016-10-09 15:09:56
    可已进行sin cos tan log 等一系列函数绘制,可进行缩放大小。呕心沥血之作,希望对你们有参考价值。代码比较水,毕竟是新手。
  • C++ HSB模型绘制调色板

    2015-11-26 11:39:44
    将photoshop的调色板画出来,用到了win32 api绘图函数,还有bmp文件的写法
  • C++下OpenCV学习笔记 ----基本图形的绘制 一.绘制直线:line函数 二.绘制椭圆:ellipse函数 三.绘制圆:circle函数 四.绘制填充多边形:fillPoly函数 五.绘制多边形:polyline函数 六.绘制矩形:rectangle函数 七....
  • C++开发-绘制正弦曲线

    千次阅读 2017-09-17 16:59:56
    通过OnDraw函数绘制图形 过程为先绘制两个坐标轴,再绘制正弦曲线的方法。其中将曲线分解为660个像素点,让其看起来更像“曲线” void CMFCApplication3View::OnDraw(CDC* pDC) { CMFCApplication3Doc* pDoc = ...
  • 利用MFC可以更好地学习c++的类和对象,增进理解抽象内容等,本贴适合有一定c基础的下载学习!
  • C++语言图形编程基本函数

    千次阅读 2020-03-08 18:34:32
        C++语言图形编程最基本的几个函数,简略代码,仅介绍函数及参数,并举例说明。非常简单,适合新人查阅。     工具及环境 平台:Windows VS2013 主要头文件:graphics.h   (百度EasyX安装依赖的库文件)   ...
  • 文件指针跳转到图像数据起始位置,读取RGB值,并利用SetPixel()函数在控制台绘制图像。 注意: 有的编译环境中调用SetPixel()函数,除了已写的头文件,还需要手动包含静态库。如cmd编译时用指令 g++ bmpshow....
  • 基于OpenCV C++绘制直方图

    千次阅读 2020-11-21 21:04:37
    直方图是变量分布的统计图形表示,它让我们能够理解数据的密度估计...现在我们来开始一步步绘制吧~ (二话不说,就直接看代码吧。哈哈哈,详情已在代码中解释~) #include <iostream> #include <opencv2/openc
  • C++ MFC 画函数曲线(包含坐标)

    万次阅读 2016-12-23 22:39:16
    第一步:新建MFC。 VC++6.0的话是文件--新建--工程--MFCAppWizard(exe)--填写工程名称--...这个函数名在--C+你的工程名字+View里面,点开这个,就可以看见OnDraw(CDC *pDC)了,双击,然后看见:// TODO: add draw c

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,919
精华内容 9,567
关键字:

c++ 绘制函数图像

c++ 订阅
友情链接: Delphi_208110.zip