
图形图像
文章平均质量分 63
dbyoung
热爱编程
展开
-
如何利用 opencv 进行 ROI(感兴趣)获取和实现 VR(虚拟现实) 演播室的播放
opencvROI(感兴趣)获取VR(虚拟现实) 演播室的播放原创 2024-09-23 08:30:56 · 1159 阅读 · 0 评论 -
检测 CPU 支持的指令集
CPU 指令集原创 2022-12-17 09:13:12 · 1251 阅读 · 0 评论 -
dbVideoSDK v2.0 高速视频处理
视频捕获、截图、MP4编码、RTMP 推流、视频涂鸦原创 2022-12-04 20:56:57 · 642 阅读 · 10 评论 -
dbImageSDK 高速数字图像处理
高速数字图像处理。支持 C++、C#、Delphi,等等语言调用原创 2022-10-21 16:31:38 · 926 阅读 · 0 评论 -
视频捕获:预览、截图、录像(MP4 软/硬编码)、推流,一网打尽
问题来由: 公司项目要对接很多厂家的视频采集卡,每个厂家都提供了 SDK。 这些 SDK 基本上都是 VC 封装的。VC2008 、VC2010、 VC2012,都有。还有的竟然用 .Net 来封装。 麻烦的是同一个 VC 运行库,版本还不一样。比如 VC2008 有好几个版本。SDK 中,就使用了不同的版本。 VC 编写的程序都是这个尿性。看看 QQ(PC版) 就知道了。VC2008 、VC2010、 VC2012,都用到了。 这些设备厂家为什么就不能提供 MT 版...原创 2022-01-21 15:41:24 · 2483 阅读 · 0 评论 -
Delphi 汇编学习(十一)--- 图像旋转的极致优化
图像旋转原理:假设对图片上任意点(x,y),绕一个坐标点(rx0,ry0)逆时针旋转RotaryAngle角度后,新的坐标设为(x', y'),有公式: x'= (x - rx0)*cos(RotaryAngle) + (y - ry0)*sin(RotaryAngle) + rx0 ; y'=-(x - rx0)*sin(RotaryAngle) + (y - ry0)*cos(RotaryAngle) + ry0 ; 那么,根据新的坐标点求源坐标点的公式为: x=(x'- rx0)...原创 2021-07-20 12:08:09 · 2397 阅读 · 1 评论 -
在 Delphi 中,以不封装的模式直接调用 OpenCV C++ Class DLL
不对 OpenCV 进行二次封装,直接调用 OpenCV 的 C++ 的 Dll,Delphi 测试源码地址:https://github.com/dbyoung720/DOpenCV.gitOpenCV 编译好的动态库文件:https://blog.youkuaiyun.com/dbyoung/article/details/114871178注意:Delphi 的测试程序,必须放到 OpenCV 的库文件目录下,或者将 OpenCV 的库文件目录放到系统搜索路径中。...原创 2021-04-02 15:11:58 · 2162 阅读 · 4 评论 -
OpenCV 4.5.2、4.5.3、4.5.4 、4.5.5 、4.6.0 SDK 编译成功发布
OpenCV :https://github.com/opencv/opencv编译时间:2021-03-16下载地址:X86:CPU 版本:https://github.com/dbyoung720/PBox/tree/master/bin/Win32/plugins/OpenCV(不包括扩展模块)X64: CPU 版本:https://github.com/dbyoung720/PBox/tree/master/bin/Win64/plugins/OpenCV/CPU(不包括扩展模块).....原创 2021-03-16 10:58:30 · 3030 阅读 · 7 评论 -
Delphi 汇编学习(十)--- 内存复制的极致优化
在 汇编学习(八)--- 图像水平镜像垂直镜像的极致优化 中,我们使用了 FastMove,来提高内存复制速度。但 FastMove 不支持 x64。而且很多年没有更新了。我们自己动手来写吧。由简到繁,容易理解。必须支持:X86、X64。必须支持:SSE2/SSE4/AVX1/AVX2。首先写一个最简单的 MOVE 函数。每一次复制 1 个字节:{ 每一次复制 1 个字节 <Byte> }procedure Move_Byte(const src: Pointer; dst:原创 2021-03-08 15:38:20 · 1077 阅读 · 2 评论 -
Delphi 汇编学习(九)--- 图像透明度调节的极致优化
图像的透明度,其实就是两幅图像的占比。R = R1 * (1 - K)+ R2 * KG = G1 * (1 - K)+ G2 * KB = B1 * (1 - K)+ B2 * KK 在 0.0 --- 1.0 之间。这里有浮点乘法运算,当然我们可以进行整点优化。标准函数:procedure ColorTrans_Scanline(bmpDst, bmpSrc: TBitmap; const intTransValue: Integer);var X, Y : ...原创 2021-02-27 13:42:49 · 633 阅读 · 2 评论 -
Delphi 汇编学习(八)--- 图像水平镜像垂直镜像的极致优化
一:水平镜像/翻转 将一幅图像水平镜像/翻转,代码很简单,就一句代码:procedure HorizMirror(bmp: TBitmap);begin bmp.Canvas.CopyRect(bmp.Canvas.ClipRect, bmp.Canvas, Rect(bmp.Width, 0, 0, bmp.Height));end;简单不。看一看 CopyRect 源码,procedure TCanvas.CopyRect(const Dest: TRect; Ca...原创 2021-02-27 00:35:26 · 781 阅读 · 0 评论 -
Delphi 汇编学习(七)--- 图像饱和度调节的极致优化
图像的饱和度调节的标准函数:procedure GetGrayAlpha(const intSaturationValue: Integer; var alpha: TAlpha; var grays: TGrays);var X : Integer; I : Integer; Gray: Integer;begin for I := 0 to 255 do begin alpha[I] := (I * intSaturationValue) shr 8;原创 2021-02-23 15:14:37 · 324 阅读 · 0 评论 -
Delphi 汇编学习(六)--- 图像对比度调节的极致优化
第五章中,我们知道图像对比度调节函数:procedure Contrast_ScanLine(bmp: TBitmap; const intContrastValue: Integer);var X, Y : Integer; pColor: PRGBQuad;begin for Y := 0 to bmp.height - 1 do begin pColor := bmp.ScanLine[Y]; for X := 0 to bmp.width - 1 do原创 2021-02-20 07:43:41 · 401 阅读 · 0 评论 -
Delphi 汇编学习(五)--- Delphi 程序员永久的痛
我是个 Delphi 程序员。一直很喜欢 Delphi。虽然现在国内 Delphi 的市场越来越小众。我依然喜欢它。一直都想用自己的微薄之力,给 Delphi 做一点点贡献。近几日春节放假,白天访亲问友,晚上闲来无事,学习学习 SIMD 程序优化。近两天在做图像的对比度调节的 SIMD 优化。procedure Contrast_ScanLine(bmp: TBitmap; const intContrastValue: Integer);var X, Y : Integer; p原创 2021-02-19 23:59:10 · 1128 阅读 · 6 评论 -
Delphi 汇编学习(四)--- 图像亮度调节的极致优化
通过前三章的学习,我们知道了 并行优化 + SSE优化,是最优的解决方案。这一节我们用同样的方法,来对图像的亮度进行调节。Delphi 汇编学习(一)--- 图像灰值化Delphi 汇编学习(二)--- 学习 SIMD 的痛苦Delphi 汇编学习(三)--- 图像灰值化的极致优化procedure Light_SSEParallel_Proc(pColor: PRGBQuad; const intLightValue, bmpWidth: Integer);asm {$IFDEF WIN64}原创 2021-02-17 11:34:43 · 441 阅读 · 1 评论 -
Delphi 汇编学习(三)--- 图像灰值化的极致优化
看过Delphi 汇编学习(一)--- 图像灰值化,Delphi 汇编学习(二)--- 学习 SIMD 的痛苦,这两篇文章后,你就知道了:其实 AVX/AVX2 的优化效果并不佳。而且很多机器也不支持这些指令(Delphi 编译器也不支持 AVX 指令集)。而 SSE 的优化效果是比较不错的。并且 Delphi 编译器也支持 SSE 指令集(易博龙是不是也知道AVX 优化效果不好,所以才不支持的)。在示例中(https://github.com/dbyoung720/ImageGray.g...原创 2021-02-14 02:08:11 · 798 阅读 · 0 评论 -
Delphi 汇编学习(二)--- 学习 SIMD 的痛苦
学习 SIMD 指令有一段时间了。真的痛苦(或许是我对指令不熟的缘故)。第一阶段:MMX一开始为了加快 CPU 的浮点运算能力,intel 搞了个MMX,看似强大。但用着用着就发现,它主要是针对浮点运算,对于整数运算有天生的不足。虽然可以通过浮点来模拟整数运算,性能也下降了。或者说提速不明显。或者说没有想象中的那么高速。算是第二阶段:SSE1/SSE2/SSE3/SSE4估计 intel 也知道了。又挤出了 SSE1/SSE2/SSE3/SSE4,这下整数指令、浮点指令、移位指令、等等指令都原创 2021-02-09 12:04:37 · 643 阅读 · 1 评论 -
Delphi 汇编学习(一)--- 图像灰值化
使用 Delphi 多年了,虽然看过 Delphi 中的汇编代码,但基本没有写过汇编代码。因为没有什么项目需求。今天因为要优化老程序的一段代码,到网上搜索了一下。发现很多都是汇编写的。效率也的确高。这让我有了学习汇编的冲动。汇编代码一般都是在对效率高的场合才会使用到,比如多媒体、视频领域。虽然我不是做相关的行业的。但学习学习总没有坏处。学习的最好办法是看例子(源代码)。越简单越好。下手的例子是 RGB2Gray。是的,图片 RGB 转 灰度图。网络上这样的代码很多,都是用 C/C++ 写原创 2021-01-23 00:54:40 · 1391 阅读 · 4 评论