
图形图像处理
文章平均质量分 75
此专栏主要是对于图形图像算法处理的相关知识,及常见图形图像算法处理的开发总结
大王算法
主要做机器人,操作系统,算法及AI方面的研发工作,有感兴趣的朋友可以私信加我好友,一起探讨交流!
展开
-
OpenCv实现多路播放
我们在实际的视频多路实现过程中,往往会遇到硬件资源不够的问题,那么如何在有限的资源下,实现多路的视频播放呢?在本文中,我们探讨了如何使用OpenCV库和C++语言实现多路视频的同时播放。通过多线程技术,我们可以有效地处理多个视频流,而OpenCV库提供了方便的视频流读取和显示接口。示例代码展示了一个基础的框架,可以根据实际需求进行功能扩展和性能优化。需要注意的是,实际应用中可能需要考虑更多的因素,例如,播放同步、错误处理、资源管理等,这些都需要在该基础框架上进一步完善。原创 2021-12-30 22:25:13 · 2683 阅读 · 0 评论 -
常用的C++可视化图形库(二)
圆形图表(饼状图),圆环图,柱形图(条形图),直线图,曲线图,梯级线图,趋势线图,曲线拟合图,线间色图,区域图,散布图(散形图),泡沫图,floating box,box-whisker,瀑布图,金融类图表,甘特图表,向量图,雷达图,极线图,rose,XY轴交换(旋转图表)和3D效果等效果。广泛的图表类型- 饼图、甜甜圈、条形图、直线、样条曲线、阶梯线、趋势线、曲线拟合、线间填充、区域、带、散点、气泡、浮动框、盒须、瀑布、轮廓、热图、表面、矢量、金融、甘特图、雷达、极地、玫瑰、金字塔、锥体和漏斗。原创 2023-08-29 21:56:24 · 662 阅读 · 0 评论 -
常用的C++可视化图形库(一)
mathGL就是用来绘制一些统计图形的一个CPP的库, 实际上就是和gnuplot类似的一个C++的库,很适合科学计算的结果分析和统计,另外还有QT,python等支持的接口,只是在编译库的时候要加上相应的option,这个库用起来很好,减少了很多工作量,其核心调用方式就是使用一个函数指针。主要功能:包含了基本的 2D 图,例如:散点图、直方图、散点图,还提供了刻度、滑块、圆盘、温度计、仪表盘等。主要特点:成熟、高效,有良好的文档,并提供了大量的示例,与大量(数千、数十万)的点工作得很好。原创 2023-08-29 21:45:18 · 3265 阅读 · 0 评论 -
EGE图形库
它的使用方法与TC中的graphics.h相当接近,对新手来说,简单,友好,容易上手,免费开源,而且因为接口意义直观,即使是之前完全没有接触过图形编程的,也能迅速学会基本的绘图。★功能更多 支持拉伸贴图,支持图片旋转,支持透明半透明贴图,支持图像模糊滤镜操作,可以用对话框函数进行图形化的输入,可以方便地对帧率进行准确的控制,可以读取常见的流行的图片格式(bmp/jpg/png),可以保存图片为bmp或png格式。Xege将发展为一个强大的,开源的,跨平台的,同时也同样简单易上手的图形库。原创 2023-08-29 21:02:31 · 297 阅读 · 0 评论 -
OpenGL 学习笔记(十)
几何阶段包括顶点着色器、几何着色器、裁剪和屏幕映射四个部分。其中顶点着色器所做的工作,包括模型变换、视图变换和顶点着色。几何着色器,则是进行顶点的增删。那么,图形的几何变换是指对图形的几何信息经过平移、比例、旋转、对称、错切等变换后产生新的图形。除了这些坐标系的变换,模型本身还会运动。比如这里的两个模型,一个向上运动,一个向下运动。显然,几何阶段经历了从建模坐标系、世界坐标系、观察坐标系到屏幕坐标系的转换。裁剪之后就可以直接进行屏幕映射了。另外,观察者也可能会运动。原创 2023-06-28 22:27:24 · 115 阅读 · 0 评论 -
OpenGL 学习笔记(七)
光栅图形学:图元生成,区域填充,裁剪,反走样,消隐等基本图形概念及相应算法;光栅图形学的基础:光栅扫描式图形显示器器,该设备是画点设备(点阵单元发生器)。光栅扫描是控制电子束按某种光栅形状进行的顺序扫描,而字符,图形是靠Z轴信号控制辉亮形成.中点Bresenham算法:输入P0和P1,输出最佳逼近这条直线的像素点集。研究怎样用计算机来显式,生成和处理图形的原理,方法和技术的一门学科。计算机视觉跟图形学相反,它是输入图形信号,输出结果特征数据。计算机图形系统的组成:交换,计算,输入,输出,存储。原创 2023-06-28 22:25:42 · 177 阅读 · 0 评论 -
GPUImage源码分析与使用(一)
有丰富的输入组件,可以处理图片、纹理、视频、二进制数据、UIElement(UIView、CALayer),可以使用GPUImage拍照、处理纹理图片、给视频或拍摄中的视频添加滤镜、添加水印可以使用UIElement。支持对大图进行处理,GPU的纹理限制是4096*4096,对于超出限制的图片,GPUImage会压缩处理导致损失图片质量,CoreImage会把图片拆解成小图处理。可以传入字符串类型,也可以传入文件类型,比如以.vsh/.fsh/.glsl等为后缀等命名的文件。原创 2023-05-31 22:13:43 · 970 阅读 · 0 评论 -
OpenGL之GPUImage源码分析
在相机数据采集中,还有一些小的细节问题,比如相机前置与后置摄像头的左右镜像翻转问题。在前面讲到过,GPUImage 的纹理坐标原点是位于左上角的,所以使用 TEXTURE_NO_ROTATION 的纹理坐标实质上是将图像进行了上下翻转,两次调用TEXTURE_NO_ROTATION纹理坐标时,又将图像复原了,这也就可以解释为什么滤镜个数为偶数时,需要使用 mGLTextureFlipBuffer 纹理坐标将图像再进行一次翻转,而 mGLTextureBuffer 纹理坐标不需要了。原创 2023-05-31 22:15:46 · 639 阅读 · 0 评论 -
GPUImage源码分析与使用(三)
【代码】GPUImage源码分析与使用(三)原创 2023-05-31 22:16:45 · 239 阅读 · 0 评论 -
GPUImage源码分析与使用(二)
5. GPUImageMovie,视频文件-> 使用AVAssetReader逐帧读取-> 帧数据转化成纹理-> 滤镜处理,AVAssetReaderOutput -> CMSampleBufferRef -> CVImageBufferRef -> CVOpenGLESTextureRef -> texture。4. GPUImageUIElement,UIView、CALayer,通过Coregraphic把要绘制的内容填充到上下文来获取图片数据->纹理,用在截屏、获取当前UIview的时候。原创 2023-05-31 22:15:58 · 438 阅读 · 0 评论 -
OpenGL 学习笔记(六)
并且可以开辟很多个 VBO ,每个 VBO 在 OpenGL 中有它的唯一标识 ID ,这个 ID 对应着具体的 VBO 的显存地址,通过这个 ID 可以对特定的 VBO 内的数据进行存取操作。首先,uniform 是全局的(Global)。EBO 中存储的内容就是顶点位置的索引 indices,EBO 跟 VBO 类似,也是在显存中的一块内存缓冲器,只不过 EBO 保存的是顶点的索引。(2).VAO 是一个保存了所有顶点数据属性的状态结合,它存储了顶点数据的格式以及顶点数据所需的 VBO 对象的引用。原创 2023-05-31 22:14:41 · 613 阅读 · 0 评论 -
OpenGL 学习笔记(五)
虽然着色器是各自独立的小程序,但它们都是一个整体的一部分。为了展示这是如何工作的,我们会稍微改动一下之前教程里的那个着色器,让顶点着色器为片元着色器决定颜色。引入相应的库-->编写顶点位置和颜色-->编写顶点着色器-->编写片元着色器(也称片段着色器)-->编写着色器程序-->设置链接顶点属性-->设置顶点缓冲对象(VBO)-->设置顶点数组对象(VAO) (也称顶点阵列对象)-->绘制三角形。GLSL中的向量是一个可以包含有1、2、3 或者 4 个分量的容器,分量的类型可以是前面默认基础类型的任意一个。原创 2023-05-31 22:14:14 · 305 阅读 · 0 评论 -
OpenGL 学习笔记(四)
代码中的indices数组,可能有人会对此有疑惑,这就是索引点,每一列数据如(0,1,2),对应着顶点坐标数据中的第一行,第二行,第三行数据,这样opengl绘制的时候就会去寻找这三行数据对应的顶点按照绘制图像进行链接,以此类推,我们绘制下一个图像可以反复使用,例如(0,1,3),openlg绘制就寻找第一行,第二行,第四行数据,索引数组在实际项目中经常使用。我们定义的数组,必须绑定到VBO中才能输入到着色器中。在OpenGL中,我们创建好着色器程序对象,紧接着就需要输入数据,数据的类型如何定义呢?原创 2023-05-31 22:12:15 · 275 阅读 · 0 评论 -
OpenGL 学习笔记(三)
通过以上,我们可以看出OpenGL的简单流程,首先调用OpenGL的接口,将Attributes、textturedata、uniform等数据输入到vetexshader等着色器中,如果是attributes数据,顶点着色器会处理它,并把结果流转到下一个primitive assembly中实现光栅化,紧接着配合textturedata通过片元着色器进行处理,最终渲染出结果,可以对照着OpenGL渲染管线图进行参考。以上只是一个窗口,那么如何使用OpenGL绘制呢?图1-1 OpenGL绘制窗口。原创 2023-05-31 22:13:01 · 443 阅读 · 0 评论 -
OpenGL学习笔记(二)
有丰富的输入组件,可以处理图片、纹理、视频、二进制数据、UIElement(UIView、CALayer),可以使用GPUImage拍照、处理纹理图片、给视频或拍摄中的视频添加滤镜、添加水印可以使用UIElement。支持对大图进行处理,GPU的纹理限制是4096*4096,对于超出限制的图片,GPUImage会压缩处理导致损失图片质量,CoreImage会把图片拆解成小图处理。可以传入字符串类型,也可以传入文件类型,比如以.vsh/.fsh/.glsl等为后缀等命名的文件。原创 2023-04-30 22:35:48 · 675 阅读 · 0 评论 -
OpenGL渲染流程详解
将顶点数据根据Primitive(原始链接关系)还原出网格结构,网格由顶点和索引组成,在此阶段根据索引将顶点链接在一起,组成点、线、面三种不同的图元,之后就是对超出屏幕的三角形进行剪裁,如果三角形ABC三个顶点其中一个点在屏幕的外面,另外两个点在屏幕里面,其实屏幕上看到的应该是个四边形,然后再将这个四边形切成2个小的三角形。VBO/VAO(到底是啥,下回讲解)是cpu提供给GPU的顶点信息,包括了顶点的位置、颜色(只是顶点的颜色,和纹理的颜色无关)、纹理坐标(用于纹理贴图)等顶点信息。原创 2023-04-30 21:57:14 · 877 阅读 · 0 评论 -
H264和X264究竟有什么区别?
X264是H264的另外一种开源编码格式,其开头的"X"意思是"software",是使用CPU软解码的一种视频格式,特征是编码速度相当快但解码很慢并相当耗费CPU处理能力,X264不支援硬件加速,是和RMVB一样的强解码类型(同一机型GeForce7300和 GeForce9600播放H264时CPU会有巨大的差异但播放RMVB和X264二者无异),X264不支持de-block(区域马赛克弱化换算) 技术。x264是基于h264的开源编码解码器,是一种采用这种标准的具体实现。原创 2022-10-24 22:17:56 · 10877 阅读 · 0 评论 -
人脸识别技术细节总结
在这里把相关经验跟大家分享一下,如有不足,敬请斧正。对于一幅人脸图像,通过定位特征点可以方便地抽取人脸的各部分特征,若以这些特征点为基准对抽取的各个特征值进行归一化,则这些特征值具有平移、旋转和尺度上的不变性,通过这样对人脸进行规范化处理,可以将不同大小、方向和水平旋转等情况的人脸统一起来,扩大人脸库的入库范围,提高人脸识别的速度。人脸对齐主要是在人脸关键点检测的基础上,利用仿射变换、相似变换等对关键点进行处理,将非正面人脸旋转成正脸来进行人脸特征提起,人脸关键点的好坏和对齐的效果影响人脸对齐的结果。原创 2022-09-30 22:45:44 · 1246 阅读 · 0 评论 -
常用的图像彩色模型
L表示明度(Luminosity),L的值域由0到100,L=50时,就相当于50%的黑a表示从洋红色至绿色的范围,a的值域由+127至-128,其中+127就是红色,渐渐过渡到-128的时候就变成绿色。面向硬件设备的彩色模型与人的视觉感知有一定的差距且使用时不太方便,如给定一个彩色图像,人眼很难判定其中的RGB分量,这是面向视觉感知的彩色模型比较方便。色调H(Hue):与光波的波长有关,它表示人的感官对不同颜色的感受,如红色、绿色、蓝色等,它也可表示一定范围的颜色,如暖色、冷色等。原创 2022-09-30 21:51:54 · 2099 阅读 · 0 评论 -
YUV各种格式的像素占用内存大小计算
假如有一幅1920×1080的图片,用yuv422来表示,那么,采样方式就是每个像素采样Y信号,U,V信号隔一个采样,这样算下来,就有1920×1080个Y,1920×540个U,1920×540个V,一幅1080×1080大小的YUV图片占的总字节数为1920×1080×2个字节,每像素2个字节,也就是16位。但这也比usb1.1的12mbps(1.5m/s)快了近10倍。其实,这是错误的,事实上“480mbps”应为“480兆比特/秒”或“480兆位/秒”,它等于“60兆字节/秒”,大家看到差距了吧。原创 2022-09-30 21:35:23 · 1001 阅读 · 0 评论 -
图像颜色空间详解
自然界的颜色千变万化,为了给颜色一个量化的衡量标准,就需要建立色彩空间模型来描述各种各样的颜色,由于人对色彩的感知是一个复杂的生理和心理联合作用 的过程,所以在不同的应用领域中为了更好更准确的满足各自的需求,就出现了各种各样的色彩空间模型来量化的描述颜色。我们比较常接触到的就包括 RGB / CMYK / YIQ / YUV / HSI等等。 对于...原创 2020-02-28 22:19:59 · 3064 阅读 · 0 评论 -
OpenCV获取视频帧
视频是一帧帧的图像,视频处理的是运动图像,而不是静止图像。视频资源可以是一个专用摄像机、网络摄像头、视频文件或图像文件序列。OpenCV中,VideoCapture 类和 VideoWriter 类为视频处理中所涉及的捕获和记录任务提供了一个易用的C++API。 下方的 recVideo 示例是一个简短的代码片段,可以让你了解如何使用一个默认摄像机作为一个捕捉设备来抓取帧,...原创 2019-11-30 20:26:34 · 7235 阅读 · 1 评论 -
OpenCV 缩放使用总结
OpenCV提供了resize函数来改变图像的大小,函数原型如下:void resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR );OpenCV resize缩放函数各参数使用说明:src:输入,原图像,即待改变大小的图...原创 2019-10-31 22:21:17 · 1919 阅读 · 0 评论 -
Centos7 编译安装openCv4.1.1
1.安装准备 操作系统,这里使用的是Centos7.2。2.软件准备 由于本人安装的版本较新,编译和依赖库也需要高版本,所以需要安装更新部分依赖库,但由于部分库目前Centos不支持yum源安装,所以使用手动安装,例如Cmake 3.5,Ffmpeg。3.操作步骤3.1 编译方式介绍本文采用的编译方式:源代码+C Make。3.2 Openc...原创 2019-10-31 22:19:58 · 4001 阅读 · 0 评论 -
图像识别四大图像库
1.OpenCV库 OpenCV功能十分的强大,而且支持目前先进的图像处理技术,体系十分完善,操作手册很详细,手册首先给大家补计算机视觉的知识,几乎涵盖了近10年内的主流算法; 然后将图像格式和矩阵运算,然后将各个算法的实现函数。用它来做了一个Harris角点检测器和Canny边缘检测器,一个小时(第一次用OpenCV)就可以搞定。而且该库显示图像极其方便,两句话就可...原创 2019-07-28 21:12:06 · 10782 阅读 · 0 评论 -
视频图像的I帧、P帧、B帧详解
1、I帧 帧内编码帧,又称Intra-Picture。I帧通常是每个GOP(MPEG所使用的一种视频压缩技术)的第一个帧,经过适度的压缩,可以当成图像。I帧实际上就是完整的图像经过压缩后的数据帧。I帧特点: 它是一个全帧压缩编码帧。它将全帧图像信息进行JPEG压缩编码 及传输。解码时仅用I帧的数据就可重构完整图像。I帧描述了图像背景和运动主体的详情。I帧...原创 2019-07-28 21:43:36 · 10330 阅读 · 4 评论 -
OpenCV图像颜色空间转换,切割
我们在平时图像数据处理时,往往要对数据进行颜色空间的转换,例如把YUV转换为RGB,BGR,RGBA等等,这些转换,我们都可以通过OpenCV中提供的cvtColor来实现。cvtColor函数原型:void cvtColor(InputArray src,OutputArray dst,int code,int dstCn=0)参数说明: code...原创 2019-09-30 19:58:50 · 643 阅读 · 0 评论 -
利用OpenCV保存图片,提高压缩质量
1.第一种方法 用OpenCV中的函数cvSaveImage(filename,img)来保存图像,很少注意到它还有第三个参数。第三个参数就是用来调整JPG图像压缩质量的,它是一个含有3个元素的数组,具体使用方法如下:#define CV_IMWRITE_JPEG_QUALITY 1#define CV_IMWRITE_PNG_COMPRESSION 16...原创 2019-09-30 19:58:56 · 2807 阅读 · 0 评论 -
OpenCV将yuv图像转为png
1.包含头文件#include <opencv2/opencv.hpp>#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>2.转换并保存string filename="out.png";cv::Mat rgb_img;cv::cvtColor(yu...原创 2019-09-30 19:58:32 · 2481 阅读 · 0 评论 -
使用FreeImage保存彩图,灰度图
1.保存彩图FIBITMAP* bitmap =FreeImage_Allocate(width,height,24); const unsigned char* source = data; for(int y=0; y < height; y++ ) { unsigned char* scanline = (unsigned char*)Fr...原创 2019-07-28 21:12:31 · 2660 阅读 · 0 评论 -
Windows 下FreeImage的配置及部分使用
1.最新版本下载链接:http://freeimage.sourceforge.net/download.htmlDownload FreeImage 3.18.0 [WIN32/WIN64]2.解压安装https://blog.youkuaiyun.com/yanlinei8571/article/details/809182763.配置FreeImage,初始化#i nclude...原创 2019-05-29 08:53:24 · 1955 阅读 · 1 评论 -
FreeImage的学习总结总结(一)
一、什么是FreeImage? FreeImage 是一款免费的、开源的、跨平台(Windows、Linux 和Mac OS X)的,支持20 多种图像类型的(如BMP 、JPEG、GIF 、PNG、TIFF 等)图像处理库。其最大优点就是采用插件驱动型架构,具有快速、灵活、简单易用的特点,得到了广泛使用。相关的源码、库文件及帮助文档可以从http://freeima...原创 2019-05-29 08:53:32 · 6659 阅读 · 0 评论 -
FreeImage的学习资料汇总
1.官网说明:http://freeimage.sourceforge.net/2.开源交流http://blog.chinaunix.net/uid-20660110-id-65639.html原创 2019-05-29 08:54:33 · 684 阅读 · 0 评论 -
FFmpeg—avformat_open_input()函数详解
pts 是显示的时间 dts是解码的时间, 这个时间是用来做同步。av_register_all(), 注册所有的格式。包括解封装格式和加封装格式。 avformat_network_init(), 用于初始化网络。FFmpeg本身也支持解封装RTSP的数据,如果要解封装网络数据格式,则可调用该函数。 avformat_open_input()。打开一个文件并解析。可解析的内容包括:视频流...原创 2020-01-31 22:35:53 · 2261 阅读 · 0 评论 -
图像旋转的原理与实现
图像旋转的原理与实现一般图像的旋转是以图像的中心为原点,旋转一定的角度,也就是将图像上的所有像素都旋转一个相同的角度。旋转后图像的的大小一般会改变,即可以把转出显示区域的图像截去,或者扩大图像范围来显示所有的图像。图像的旋转变换也可以用矩阵变换来表示。设点逆时针旋转角后的对应点为。那么,旋转前后点、的坐标分别是:(3-6)(3-7...原创 2019-04-30 23:15:13 · 5718 阅读 · 0 评论 -
OpenCV进行图像相似度比对的几种办法
1、直方图法 方法描述:有两幅图像patch(当然也可是整幅图像),分别计算两幅图像的直方图,并将直方图进行归一化,然后按照某种距离度量的标准进行相似度的测量。 方法的思想:基于简单的向量相似度来对图像相似度进行度量。 优点:直方图能够很好的归一化,比如256个bin条,那么即使是不同分辨率的图像都可以直接通过其直方图来计算相似度,计算量适中。比较适...转载 2019-08-25 22:39:51 · 19394 阅读 · 0 评论 -
OpenCV实现图像旋转
Mat matRotateClockWise90(Mat src){ if (src.empty()) { qDebug()<<"RorateMat src is empty!"; } // 矩阵转置 transpose(src, src); //0: 沿X轴翻转; >0: 沿Y轴翻转; <0: 沿X轴和Y轴翻转 flip(src, src, 1);/...原创 2019-04-28 08:58:42 · 957 阅读 · 0 评论 -
JPEG图像压缩算法
JPEG压缩算法可以用失真的压缩方式来处理图像,但失真的程度却是肉眼所无法辩认的。这也就是为什么JPEG会有如此满意的压缩比例的原因。一.JPEG压缩过程JPEG压缩分四个步骤实现:1.颜色模式转换及采样;2.DCT变换;3.量化;4.编码。...原创 2019-05-01 23:36:45 · 1597 阅读 · 0 评论 -
FreeImage的学习总结总结(五)
旋转图像,滤波,未完待续,参考博客如下:https://blog.youkuaiyun.com/bob_dong/article/details/64131352https://www.cnblogs.com/wangshide/archive/2012/04/25/2470693.html原创 2019-07-28 21:12:27 · 477 阅读 · 0 评论 -
FreeImage通用图像加载实现
1.FreeImage支持多种图片格式的处理,借用这一点可以做一个通用图像加载的东西2.具体步骤如下:(1).配置头文件和库#include “FreeImage.h”#pragma commet(lib,"FreeImage.lib"(2).对相对路径的资源进行加载 FREE_IMAGE_FORMAT fif = FIF_UNKNOWN; ...原创 2019-08-31 22:02:21 · 577 阅读 · 0 评论