自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 【AI】DeepSeek带你飞

这个模型以其高质量的编码服务而著称简直就是我们开发者的福利,并且DeepSeek还能够处理和分析复杂的数据,执行图像识别、自然语言处理、语音识别和预测分析等任务, 通过模拟人类大脑的神经网络结构来学习数据和规律,并利用这些知识来执行各种任务!Cline是VSCode中的一个扩展插件, 通过它我们可以无缝接入各种AI语言大模型API然后利用AI技术为我们开发者提供智能的代码补全、错误检测与修复、代码生成等功能,提高编程效率和代码质量!官网地址 https://www.deepseek.com。

2025-01-27 10:06:45 1618

原创 Ubuntu安装NVIDIA显卡驱动

输入命令 lspci | grep -i vga 或者 lspci | grep -i nvidia(如果是NVIDIA显卡),然后按Enter键。在输出信息中,查找显卡型号。通常,显卡型号会显示在类似于“VGA compatible controller”或“NVIDIA Corporation”的行中。Nouveau是一个开源的显卡驱动,与NVIDIA的官方驱动冲突。下载与你的显卡型号和Ubuntu版本相匹配的驱动程序。如果一切正常,这个命令应该会显示关于你的NVIDIA显卡的信息。

2024-02-25 16:16:06 5415

原创 【OpenCV】简介

官网OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,它包含了大量的函数和算法,用于处理图像和视频数据,进行目标检测、跟踪、特征提取等任务。

2024-02-23 12:11:42 1093

原创 【OpenCV】CUDA模块8:计算Mat中最大值最小值

接下来,我们使用 cv::cuda::max 计算这两个数组对应元素的最大值,并将结果存储在另一个 cv::cuda::GpuMat 对象 dst_gpu 中。在这个例子中,我们首先加载一张灰度图像到 cv::Mat 对象中,然后将其上传到 GPU 作为 cv::cuda::GpuMat 对象。3:并行计算:在需要并行执行最大值计算的场景中,例如在大规模数据集的统计分析中,cv::cuda::max 可以提供高效的解决方案。cv::cuda::max 可以用于选择两个特征值中的较大者。

2024-02-19 21:41:17 846

原创 【OpenCV】CUDA模块8:采样/resize()

在OpenCV中,图像采样通常指的是改变图像的尺寸或分辨率,这可以通过上采样(增大图像)或下采样(缩小图像)来实现。这些操作在图像处理中非常常见,用于调整图像大小、准备数据以供机器学习模型使用、构建图像金字塔等。OpenCV提供了多个函数来进行图像采样:1):上采样 - cv::pyrUp:此函数用于增大图像的尺寸。它通常基于线性插值或某种形式的图像重建滤波器来工作。在OpenCV的CUDA模块中,cv::cuda::pyrUp是对应的GPU加速版本。

2024-02-19 21:11:45 1867

原创 【OpenCV】CUDA模块7:PtrStep<>

注意:在这个修正后的示例中,我使用了 cv::cuda::PtrStepSz 而不是 cv::cuda::PtrStep。cv::cuda::PtrStep 通常用于与 cv::cuda::GpuMat 一起工作,后者是一个用于在 GPU 上存储图像或矩阵的类。通过 cv::cuda::GpuMat::ptr 方法,可以获取一个指向图像特定行的 cv::cuda::PtrStep 对象,然而,在实际使用中,cv::cuda::PtrStep 往往与特定的元素类型一起使用,而步长类型则根据元素类型自动推断。

2024-02-19 20:01:35 602

原创 【OpenCV】CUDA模块6:Stream

同一个流中的命令会按照它们被添加到流中的顺序执行,而不同流中的命令则可以并行执行,具体取决于 GPU 的硬件资源和调度策略。cv::cuda::Stream 类提供了创建和操作 CUDA 流的功能。在 OpenCV 的 CUDA 模块中,许多函数都接受一个 Stream 参数,以便你可以指定在哪个流上执行该操作。然而,上面的代码示例实际上并没有利用到 CUDA 的并行性,因为我们没有创建真正的独立流。cv::cuda::Stream 是 OpenCV CUDA 模块中的一个类,它表示一个 CUDA 流。

2024-02-19 19:35:43 1267

原创 【OpenCV】CUDA模块5:compare()

然后,我们使用 cv::cuda::compare 函数比较这两个矩阵中的元素,并将结果存储在 result 中。cmpop:比较操作的类型,可以是以下之一:CMP_EQ(等于)、CMP_GT(大于)、CMP_GE(大于或等于)、CMP_LT(小于)、CMP_LE(小于或等于)或 CMP_NE(不等于)。cv::cuda::compare 是 OpenCV 的 CUDA 模块中的一个函数,用于在 GPU 上执行两个矩阵(通常是 cv::cuda::GpuMat 类型)之间的元素级比较操作。

2024-02-19 19:23:12 500

原创 【OpenCV】CUDA模块4:copyMakeBorder()

在这个示例中,我们首先读取了一张灰度图像到 GpuMat,然后使用 cv::cuda::copyMakeBorder 在图像周围添加了指定大小的常数边框(值为 0)。borderType:边框类型,可以是 cv::BORDER_CONSTANT、cv::BORDER_REPLICATE、cv::BORDER_REFLECT 或 cv::BORDER_WRAP 等之一。dst:输出图像,类型为 cv::cuda::GpuMat,包含了添加了边框的输入图像。

2024-02-19 19:19:46 610

原创 【OpenCV】CUDA模块3:图像转换及采样

在这个例子中,我们首先加载一张彩色图像到 cv::Mat 对象中,然后将其上传到 GPU 作为 cv::cuda::GpuMat 对象。接着,我们使用 cv::cuda::cvtColor 将图像从 BGR 颜色空间转换为灰度颜色空间,并将结果存储在另一个 cv::cuda::GpuMat 对象中。在这个例子中,我们首先加载一张灰度图像到 cv::Mat 对象中,并将其上传到 GPU 作为 cv::cuda::GpuMat 对象。它基于给定的映射关系,将输入图像中的像素位置映射到输出图像中的新位置。

2024-02-19 19:13:09 652

原创 【OpenCV】CUDA模块2:矩阵multiply/subtract/add运算

在这个示例中,cv::cuda::multiply 函数接受两个输入图像 gpu_img1 和 gpu_img2,并生成一个输出图像 gpu_result,其中包含两个输入图像的逐元素乘积。函数的基本用法是将两个相同大小和类型的 cv::cuda::GpuMat 对象作为输入,并输出一个包含逐元素乘法结果的新 cv::cuda::GpuMat 对象。4:增强对比度:在某些情况下,通过从一个图像中减去另一个图像(可能是模糊版本或低通滤波后的图像),可以增强图像的对比度,特别是边缘和细节部分。

2024-02-19 19:12:30 833

原创 【OpenCV】CUDA模块1:GpuMat()

2:高效的数据传输:该类提供了在 CPU 和 GPU 之间高效传输数据的方法,如 upload() 和 download(),这些方法用于将数据从 CPU 内存传输到 GPU 内存,或者从 GPU 内存传输回 CPU 内存。3:与 CPU 上的 cv::Mat 兼容:cv::cuda::GpuMat 的设计使其与 CPU 上的 cv::Mat 类兼容,便于在两者之间进行转换和操作。这里,img1应该是一个已经加载到内存中的图像。1:它声明了一个cv::cuda::GpuMat类型的变量gpu_img1。

2024-02-19 19:11:30 2295

原创 win10磁盘分区

3、然后在右侧界面中找到内存最大的盘D盘,鼠标右键选择【压缩卷】打开,新盘大小为200G 点击压缩。4、压缩完成后,界面中会出现一个黑色框,里面显示200G未分配的磁盘,2、在计算机管理界面中依次点击【储存】->【磁盘管理】,进入下一步。1、进入win10桌面,鼠标右键【此电脑】,选择【管理】打开。8、回到桌面,点击此电脑,我们就可以看到新的分区出现了。5、鼠标右键黑色区域未分配的磁盘上,选择【新建简单卷】7、分区创建完成后黑色未分配磁盘就会变成蓝色的了。选择分区->删除卷->是 设置分区为未分配。

2024-02-19 15:21:11 1232

原创 【ubuntu】: /dev/loop0-6 100%

2:临时文件或缓存占满空间:某些应用程序或服务可能会使用/dev/loop0来存储临时文件或缓存数据,如果这些文件或数据不断增长并且没有被正确清理,也可能导致空间占满。3:挂载点或文件系统问题:如果/dev/loop0所挂载的文件系统或挂载点存在问题,例如权限设置不当、文件系统损坏等,也可能导致异常的空间占用。1:挂载的文件或磁盘镜像过大:如果你挂载了一个非常大的文件或磁盘镜像,并且尝试在其中写入大量数据,这可能会导致/dev/loop0空间不足。磁盘I/O操作可能会变慢,导致应用程序响应迟缓。

2024-02-19 12:44:58 5570

原创 【Ubuntu】使用启动U盘 拷贝文件到硬盘备份

若Ubuntu系统启动时报错,尝试了各种办法,一直进不去,只能重装。这种情况下需要把重要的项目文件拷贝出来。

2024-02-19 12:01:28 1275

原创 OpenMP

OpenMP是一种并行编程的模型和API(应用程序接口),它提供了一套简单灵活的机制,用于在共享内存系统中开发并行应用程序。OpenMP特别适用于多核和多处理器系统,允许程序员在代码中指定可以并行执行的部分,从而实现程序的并行化。OpenMP支持多种编程语言,包括C、C++和Fortran,并提供了一组编译器指令(pragma)、运行时库函数和环境变量,用于控制并行执行和同步。通过OpenMP,程序员可以更加容易地利用多核处理器的并行计算能力,提高程序的性能和效率。

2024-02-08 16:57:21 1196

原创 CUDA:cudaHostAlloc()

cudaHostAlloc() 是 CUDA 中的一个函数,用于在主机(CPU)上分配页锁定(或称为“固定”)内存。页锁定内存与普通的可分页主机内存相比有一些优点,尤其是对于 CUDA 编程:更高的数据传输速度:当数据需要从主机内存传输到 GPU 设备内存时,页锁定内存通常能够提供更高的带宽,因为 GPU 可以直接访问物理内存页,而无需通过操作系统的页面交换机制。异步数据传输:页锁定内存允许主机和设备之间的数据传输与主机上的其他操作并行进行。

2024-02-07 16:48:18 2120

原创 CUDA:Event

等待事件:主机代码可以使用 cudaEventSynchronize() 函数等待一个事件。当调用 cudaEventCreate() 时,需要传递一个 cudaEvent_t 类型的指针,函数成功执行后,这个指针将指向一个新创建的事件对象。记录事件:使用 cudaEventRecord() 函数将事件记录到特定的 CUDA 流中。销毁事件:当不再需要事件时,应该使用 cudaEventDestroy() 函数来释放与事件相关联的资源。cudaEventSynchronize(): 用于等待事件完成。

2024-02-07 14:23:21 715

原创 CUDA:常用函数2

cudaDeviceReset() 是 CUDA 的一个函数,用于重置当前 GPU 设备,释放所有与该设备关联的资源,如内存和缓存。cudaDeviceSynchronize()是当前推荐使用的函数,因为它提供了更广泛的同步功能,并可能在未来的CUDA版本中继续得到支持。cudaDeviceSynchronize() 是一个 CUDA 函数,它确保所有之前发出的、与当前设备(GPU)关联的主机(CPU)线程中的 CUDA API 调用都已完成执行。在实际应用中,使用哪一个函数取决于你的同步需求。

2024-02-07 14:19:38 2252

原创 shell: zip/chmod

chmod 是一个在 Unix 和 Unix-like 操作系统(如 Linux)中用于修改文件或目录权限的命令。权限决定了哪些用户可以对文件或目录进行读取、写入或执行操作。

2024-02-06 16:14:19 824

原创 Ubuntu安装SDL

Cmake 编译运行。

2024-02-05 17:19:38 613

原创 Ubuntu 源码安装ffmpeg

下载地址 https://code.videolan.org/videolan/x264/-/archive/master/x264-master.tar.bz2。下载地址 https://sourceforge.net/projects/opencore-amr/files/fdk-aac/下载地址 https://sourceforge.net/projects/lame/下载地址 https://www.speex.org/downloads/

2024-02-04 20:09:03 680

原创 CUDA:创建和使用Stream

CUDA中的流(stream)表示一个GPU操作队列,该队列中的操作将以添加到流中的先后顺序而依次执行。可以将一个流看做是GPU上的一个任务,不同的流(即不同的任务)可以并行执行。这种并行性允许在同一设备上的多个操作重叠执行,从而提高了GPU的利用率和程序的执行效率。cudaSetStream(): 用于设置当前线程的执行流。cudaStreamCreate(): 用于创建执行流。cudaStreamSynchronize(): 用于等待执行流中的所有操作完成。

2024-02-01 21:51:38 1853 3

原创 CUDA : 数据类型

只有当一个流中的所有操作都完成之后,另一个流中的操作才会开始执行。通过使用 CUDA 流,可以将不同的计算任务组织成顺序执行的批次,每个批次中的操作在 GPU 上异步执行。cudaStream_t 是 CUDA 编程中的一个数据类型,用于表示 CUDA 流。在 CUDA 中,线程块的大小是线程并行执行的关键参数,它影响着内存访问模式、负载均衡和并行度。在 CUDA 中,dim3 通常用于指定线程块的尺寸。此外,CUDA 还提供了其他与流相关的函数和概念,如事件和超队列技术,用于更细粒度的流控制和优化。

2024-02-01 21:50:24 1012

原创 CUDA:常用函数1

CUDA 提供了许多用于并行计算和 GPU 编程的函数和 API。以下是一些 CUDA 编程中常用的函数:cudaMalloc(): 用于在 GPU 上动态分配内存。cudaMemcpy(): 用于在 GPU 和 CPU 之间复制数据。cudaMemset(): 用于将 GPU 内存中的字节设置为特定值。cudaThreadSynchronize(): 用于同步当前线程块的所有线程。cudaDeviceSynchronize(): 用于同步所有 GPU 操作。

2024-02-01 21:42:01 2683

原创 常用的十六进制

十六进制数经常用于表示颜色、网络协议中的值、内存地址等。在很多编程语言中,你也可以直接使用前缀 0x 来表示一个数是十六进制的。0xFF 是一个十六进制数。在计算机编程中,十六进制数经常用于表示颜色、字节值等。所以,如果你在某处看到 0xFF,它很可能表示一个值为 255 的十六进制数。0xA 到 0xF:这些表示十进制中的 10 到 15。0x0 到 0x9:这些表示十进制中的 0 到 9。具体来说,0xFF 等于十进制的 255。

2024-02-01 21:25:47 1074

原创 CUDA:修饰符

表明被修饰的函数是一个核函数,既该函数在设备端执行、在主机端调用(3.2及之后版本也可在设备端调用),在被调用时必须通过<<<>>>或cudaLaunchDevice等方式指定执行配置。:表明被修饰的函数在设备上执行,但只能在其他__device__函数或者__global__函数中调用。:表明被修饰的函数在主机端执行且只能在主机端调用。此外,还有__const__、__shared__等修饰符,这些修饰符不能单独使用,只能与其他修饰符一起使用。

2024-02-01 21:22:03 533

原创 CUDA 3:程序框架

在CUDA程序中,数据并行处理的部分通常由核函数(kernel)实现,这个核函数在CUDA中被编译并传送到GPU执行。主程序还是由CPU来执行,而当遇到数据并行处理的部分,CUDA将程序编译成GPU能执行的程序,并传送到GPU。以上仅为基本框架,实际编写CUDA程序时,还需要考虑数据在CPU和GPU之间的传输、内存管理、线程管理等因素。3: C++自定义函数和CUDA核函数的原型声明:声明程序中使用的所有C++函数和CUDA核函数。5: 清理:释放GPU内存和资源,释放CUDA环境。

2024-02-01 21:12:36 508

原创 CUDA 2: 线程模型

每个线程有一个唯一的线程ID,通过这个ID,线程可以定位到自己在块中的位置。CUDA的线程模型基于二维的线程块和三维的线程网格,通过这两个层次的组织,可以实现大规模的并行计算。线程网格(Grid):线程网格是一组线程块的集合。每个线程网格都有一个唯一的网格ID,通过这个ID,线程可以定位到自己在网格中的位置。线程块(Block):线程块是并行执行的线程集合,线程块内的线程共享一些资源,比如共享内存。每个线程块都有一个唯一的块ID,通过这个ID,线程可以定位到自己在块中的位置。

2024-02-01 19:32:37 440

原创 CUDA 1: 核函数

当你在 CUDA 程序中调用一个核函数(kernel)时,这个核函数会在 GPU 上由多个线程并行执行。值得注意的是,虽然 cudaDeviceSynchronize() 可以确保核函数完成,但它也会增加一定的执行时间,因为它会等待所有并行线程块完成。简单地说,如果你在一个核函数之后调用了 cudaDeviceSynchronize,那么在继续执行主机代码之前,它会等待该核函数完成。总之,CUDA核函数是用于在GPU上并行执行计算的函数,通过使用共享内存和其他GPU资源,可以显著加速计算密集型任务。

2024-02-01 18:55:38 650

原创 cv::Size()

cv::Size() 是 OpenCV (一个开源的计算机视觉库) 中的构造函数,用于创建一个 Size 对象,表示一个矩形的大小。// width 和 height 是你想要设置的宽度和高度。如果你有一个 cv::Mat 对象或一个 cv::Rect 对象,你可以使用其 .size 成员来获取其大小。// 创建一个宽度为500像素,高度为300像素的矩形。你可以使用 .width 和 .height 成员来获取或设置大小中的宽度和高度。

2024-02-01 18:22:34 1618

原创 ubuntu环境通过CMake安装OpenCV

第二部分是独立的代码库contrib,https://github.com/opencv/opencv_contrib,它包含了 最近加入 OpenCV 的计算机视觉算法,其中包含一些基 于特定许可协议、需要付费才能使用的算法,但如果要使用最先进的算法,就很可能需要这个额外的模块。第一部分是包含了 成熟算法的 OpenCV 主源码库,https://github.com/opencv/opencv ,OpenCV 的核心函数,也就是之前下载的内容。官网:https://github.com/opencv。

2024-01-27 20:32:32 1598

原创 OpenCL与OpenVX,CUDA区别

OpenCL(Open Computing Language)和OpenVX都是用于处理并行计算和加速应用的框架,但它们有一些关键的区别。首先,OpenCL设计为一种通用的并行计算框架,用于执行任务在异构系统上(包括CPU、GPU和其他类型的处理器)。OpenCL程序通常包括一个主程序,它创建一个或多个程序对象,每个程序对象定义一组内核,这些内核在设备上并行运行。另一方面,OpenVX主要针对计算机视觉应用。它提供了一套API,这些API用于编写在各种平台上运行的计算机视觉应用程序。

2024-01-24 13:01:28 1053 1

原创 OpenVX简介

OpenVX是一个开放的计算机视觉应用跨平台加速标准,由Khronos Group定义。它支持性能和功耗优化的计算机视觉处理,重点是嵌入式和实时用例,例如高级驾驶员辅助系统(ADAS)、面部、身体和手势跟踪、智能视频监控、物体与场景重建、增强现实、目视检查和机器人等。OpenVX提供了一个开放的API,使用户可以在各种平台上开发和部署计算机视觉应用程序。它支持各种操作系统和处理器架构,包括ARM、MIPS、PowerPC等。

2024-01-24 12:53:18 847 1

原创 error: no matching member function for call to ‘send‘

编译运行报错:error: no matching member function for call to ‘send’

2024-01-23 17:38:30 554 1

原创 实时仿真四路鱼眼实现2D环视效果

#序言:先展示下效果,随后有空总结下原理和具体代码。

2024-01-22 14:50:29 1043 1

AI第九章:agent-tuning

AI第九章:agent-tuning

2025-02-17

前端Node:第四章:大事件

前端Node:第四章:大事件

2025-02-06

【AI11111111111111】

【AI11111111111111】

2025-01-09

unity URP 描边,透视效果

unity URP 描边,透视效果

2024-07-22

前端第二部分:Vue3-pinia

前端第二部分:Vue3-pinia

2024-07-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除