自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(74)
  • 资源 (1)
  • 收藏
  • 关注

原创 FFMPEG总结——底层调用COM导致编码器无法正常打开

查找原因之后是因为COM存在两种模式STA(单线程模式)和MTA(多线程模式),当前是在同一个线程中调用的,这个时候STA会产生冲突,因为一个线程只允许打开一个COM,但是现在要打开两个就会出现错误,有的时候整个软件都会卡死。但是想要看到ffmpeg的报错信息需要进一步的处理,因为他不会直接显示在后台或者崩溃,他会返回错误代码,错误代码的提示信息不够全面,这里就需要我们自己写一个log的回调函数用于接收这些错误信息。

2024-09-27 11:05:29 591

原创 QT总结——图标显示坑

写qt工程的时候我们一般会设置图标,这个图标是窗体的图标同时也是任务栏的图标,但是我发现生成的exe没有图标,这个时候就想着给他加一个图标,使用vs的添加资源增加一个rc和icon,之后重新编译得到的程序exe就会存在图标。qt中有一个dll负责ico图标的加载,我想着有这个就够了,我就把他拷到了exe的目录下,结果软件的图标消失了,一开始以为是我加了rc,因为在使用rc之前是没有问题的,然后把rc删了发现还是不行,之后就在这两个文件以及代码等各种地方不停徘徊。

2024-07-23 09:45:02 575

原创 FFmpeg——视频拼接总结

在查找了ffmpeg资料后发现是支持这么做的,但是必须要将文件一一打开然后复制到另一个文件中,资料中有很多中说法concat demuxer(解复用,这个其实不太理解什么意思,但是看说明就是利用一个txt文件将需要进行拼接的文件列在这个txt中,然后一一去处理,做一个流的拷贝)。FFmpeg功能强大唯一不好的一点是大部分都是使用命令行的操作,编程相关的内容少的可怜,而且很不全面,后面找了好久都没找到很完整的内容,需要自己一点一点去找和试,其中有几个不错的参考。

2024-07-08 10:55:52 1901 4

原创 vs mfc未加载mfc140u导致无法启动

查了好多资料都认为是dll丢失,要么去下载要么去连接微软的服务器,如果连接微软的服务器启动的时候巨慢,并且我其它的mfc工程不受影响证明我的电脑里没有缺失dll,也就不需要去下载。不过报错信息的不同也需要不同的解决方式,之前遇到过无法正常启动的mfc工程,提示也是有dll丢失等问题,实际上是启动方式没有设置为窗口而是选择了控制台。这个可能与mfc的兼容有关,多字符集可以支持国际化,未设置采用默认的字符集,一般这种字符集是mfc所需要的。另外就是与工程的设置,三方库编码支持以及非mfc应用的编码格式有关。

2024-04-08 09:30:12 938

原创 QT绑定信号槽重载

而是使用传递函数指针的形式,这时如果遇到重载函数就需要进行一下类型转换,有两种方式。可以通过QOverload或者static_cast进行转化。qt5中信号和槽的绑定方式发生了变化不再使用宏。

2024-03-06 15:27:50 908

原创 QT总结-使用QOpenGLWidget后界面刷新卡死

这个情况不是所有的机器都会出现,尝试之后发现针对nvidia3060的机器大概率会出现,尤其是具备两个显卡的笔记本,笔记本存在Intel集成显卡和nvidia3060,此时会发现如果使用nvidia3060进行opengl渲染会出现这个问题(不太清楚是不是所有的机器都会出现,但是自己试了两台一样配置的笔记本都出现了),使用集显则不会出现这个问题,另外使用两个显示器的单个nvidia3060显卡的台式机会出现切换到副屏然后最大化的时候卡死。如果还有其它解决方法也希望大家能够分享一下。

2024-02-04 10:28:13 1532 5

原创 cmake+OpenCV4.8.0+contrib4.8.0+cuda 12.2编译踩坑

进行类型转化可以解决,搜了一下原因,可能与cuda的新旧版本有关,适用于cuda12.1和cuda12.2,这里原本可能存在一个隐式转换函数,但是新版本没有了,所以编译的时候会有问题。第一次点击configuration会弹出需要选择编译器,这个时候需要根据cuda支持的版本确定需要使用的vs版本,同时下方会有选择是x64还是win32的选项。一般cuda的安装路径都在下面的路径中,这个路径中会包含不同版本的cuda,找到cudnn对应的版本的文件夹,如果找不到路径就去查看环境变量中cuda的路径。

2023-11-20 15:37:19 1485

原创 QFile——踩坑记录

因为开发需要对多个文件进行管理,所以使用了QFile和容器来进行,但是编译器一直报错,提示使用已删除函数,找了很久发现是因为QFile没有’=‘重载,不支持复制拷贝,所以在使用容器的时候一直报错。查看了其他的文件输出相关的类,也没有看到相关内容,猜测可能是为了保证文件操作的唯一性。但是如果使用指针或者智能指针就不会出现这个问题,因为不存在对象本身的拷贝复制,仅仅是处理指针,所以可以用容器类管理QFile等文件和输出相关对象的指针来回避这个问题。最好是使用智能指针可以不用考虑释放问题。

2023-04-18 13:55:06 340

原创 qt总结——ubuntu中qt无法输入中文

ubuntu的qt中文输入支持

2022-08-01 13:56:26 3997 2

原创 Qt总结——菜单隐藏

qt menu隐藏设置

2022-07-26 11:24:15 2861

原创 Qt 扇形颜色填充抗锯齿

qt扇形填充抗锯齿总结

2022-07-26 11:09:04 652

原创 Qt——无法实时刷新问题

qt无法实时刷新问题

2022-03-29 09:49:35 4622

原创 vs2015——代码无法自动生成

在使用vs2015的自动代码生成功能的时候,提示无法生成,因为代码是只读的,已经复制到了剪切板,上网查了好多资料,有的说需要删除ncb文件等,结果没找到这个文件,后来发现应该是头文件的问题,有资料说需要重新配置相对路径,因为头文件和cpp文件不在同一个路径下,我尝试将头文件从项目中移除然后重新添加,之后就可以正常进行代码的生成了。...

2021-10-28 11:22:21 718 1

原创 VS——提示代码与内置版本不同

程序编译通过运行的时候提示与内置版本不同,此时是因为在VS的文件夹下面有一个Backup File文件夹的存在导致的,删掉这个文件夹之后清理项目然后全部重新编译就可以正常了。我的这个文件在文档的VS文件夹下,一般都在这个位置。...

2021-10-14 14:57:25 712

原创 VS2015提示未包含预编译头文件

在是用vs2015时,因为从其他地方拷贝了一些类,此时出现报错,提示没有包含预编译头文件,可以有几种处理方法。使用属性设置不使用预编译头文件,可以在cpp文件的属性项中设置,但是可能需要设置多个。在cpp文件的最上方,第一行代码的位置引入预编译头文件,必须是在最上方,否则还是会报错,因为预编译会把预编译头前面的代码忽略掉。...

2021-10-12 14:06:29 1286

原创 QT——设置comboBox隐藏坑

想要设置combox隐藏选项,同时保证index不改变,然后参考一些资料找到了使用QListView来设置QListView* view = qobject_cast<QListView*>(ui.comboBox->view());view->setRowHidden(0, true);//隐藏为TRUE,显示为false设置完成后comboBox中的选项会被隐藏,但是还是可以被访问到,因为滚轮滚动的时候还是可以访问到隐藏的选项,所以,这种做法必须要禁用滚轮才行。..

2021-09-26 17:29:45 1988

原创 TBB——使用lambda进行并行加速

TBB是Intel的并行加速框架,有CPU进行线程的管理,可以支持AMD。因为是CPU直接进行线程的管理,会比普通的线程速度更快,同时比起普通线程需要自己管理TBB不需要自己去管理,相对会方便一定,他可以自己确定需要开辟的线程数,同时有很好的扩展性,除了可以发挥更好的性能优势外,在CPU进行升级之后它也可以自动进行扩展。看到教程中使用TBB都是以对象为例的,但是需要写一个类,个人觉得比较实用的还是lambda表达式的形式,毕竟一般都是对某个方法使用线程,不想去封装一个类。tbb::parallel_fo

2021-09-15 15:05:54 1707

原创 C++——rename异常导致的程序退出

这个一定要记录一下,软件总是运行到一定程度就自己退出了,弄的莫名其妙的,一开始以为是自己的代码写错了,但是定位错误位置永远在rename的位置退出,想着怎么也不会是c++函数的错,结果死磕了一个星期还是这句代码不对,然后就开始查这个函数,发现了问题。c++在异常处理的时候使用的是noexcept进行异常的抛出,这里noexcept的用法以比较特殊noexcept:表示不抛出任何异常,但是如果一旦发生异常,则会调用terminate(),然后terminate()调用abort(),直接终止程序noe

2021-08-30 15:43:36 1442

原创 OpenCV总结——convertTo函数与浮点数类型

在使用convertTo函数是遇到了一个现象,这里记录一下(本来以为用的很熟的函数一段时间后还会遇到新的问题,还是需要进一步的研究与学习)。在使用convertTo函数将CV_8UC1类型的图像转化为CV_32F或CV_64F的时候出现图像变成全白或者部分图像有内容剩下的都不对的情况。查找相关资料后在这里做一个记录,引发这个现象的原因是浮点数类型在颜色空间中的范围是0-1.0之间,但是CV_8UC1中的像素范围是0-255,这样如果直接转化过去的话,很明显大部分的像素都超过1,全是白的,这里需要先对像素进

2021-05-08 10:15:20 6589 1

原创 OpenCV总结——高斯核

OpenCV提供了一些滤波需要的核,虽然没有函数,但是可以使用卷积函数结合核进行计算。这里总结高斯核函数。getGaussianKernelReturns Gaussian filter coefficients.C++: Mat getGaussianKernel(int ksize, double sigma, int ktype=CV_64F )Python: cv2.getGaussianKernel(ksize, sigma[, ktype]) → retvalParameters:

2021-05-07 11:37:25 1840 1

原创 OpenCV总结——使用形态学方法

OpenCV除了可以使用默认的腐蚀膨胀函数外,还可以进行不同形态学算子的的计算OpenCV中预先定义了一些常用的结构,常用的方形,圆,十字等。CV_EXPORTS_W Mat getStructuringElement(int shape, Size ksize, Point anchor=Point(-1,-1));通过这个函数可以得到形态学结构,这个结构可以用于我们的膨胀腐蚀函数,同时还可以用于开闭运算的函数。CV_EXPORTS_W void erode( InputArray src, O

2021-05-07 10:37:44 277 1

原创 CSV文件导出格式问题

在进行CSV文件导出的时候因为存在过长的数字文本,在用Excel打开的时候会被默认问数字形式,所以会出现科学计数法的形式,与所要求的文本形式不符,想要在进行导出的时候将它设置为文本格式需要用到\t制表符。如:“9564854”则写为“\t9564854”,这样在导出的文本中显示的就是字符串。...

2021-04-22 11:36:48 1292

原创 OpenCV总结8——MP4和H264保存类型

opencv中要将视频保存为mp4类型则必须使用VideoWriter::fourcc('m','p','4','v');这里的参数mp4v必须是小写的,如果是大写则提示不支持mp4格式。如果在读取是不支持MP4格式,则可以考虑将opencv_ffmpeg.dll放到system32下或者对应的工程下面。另外在进行视频保存的过程中需要使用H264进行压缩,想要适应H264的编码必须要下载openh264-1.8.0-win64.dll,因为OpenCV本身是不支持的,所以需要下载一个dll,如果不知

2021-04-02 10:49:39 3234

原创 OpenCV总结7——数据类型引发的错误

这里记录纯属个人踩到的坑,并且不知道原因,没有解决。opencv中对于int类型的mat感觉做的很差,许多操作不明所以的报错出问题,换成其他类型就没有问题,让人非常头痛,所以这里只做提示,尽量不要使用它的int也就是CV_16S的类型,我用过几次,每次都会出现问题,有时候遍历都无法正常进行,并且目前为止没有解决。如果有人遇到类似问题并且已解决,希望可以分享一下解决的经验。...

2021-03-11 15:47:01 268

原创 vs2015——拖动选项卡导致软件崩溃重启

vs中有个比较方便的功能,可以所以拖动选项卡位置,但是突然这个功能就不好使,只要将选项卡拖到vs2015中,软件就会崩溃重启,先提供解决方法,vs出现这个问题基本是更新的锅,有些内容可能随着系统的升级不太好用了,查看了一下应该是一个框架的问题.NETFramework版本不太对,更新完成后就不再出现问题,2017和2019也可以自己更新。更新并安装后,重新启动则不再出现拖动选项卡崩溃的问题。...

2021-03-09 17:27:56 1560

原创 OpenCV总结6——stitcher

之前写过一次stitcher,但是写的不太好,这次准备一点一点的总结,可能有出错的地方,欢迎指正。之前总结的时候忘了查看源码的版本,看的是旧版的源码,这次是新的。先从头文件开始。在stitcer.cpp中包含的头文件是precomp.hpp,这个文件中包含了许多cuda并行计算用的类#ifndef __OPENCV_STITCHING_PRECOMP_H__#define __OPENCV_STITCHING_PRECOMP_H__#include "opencv2/opencv_modules

2021-02-25 10:09:43 6360 9

原创 OpenCV总结6——convertTo和cvtColor

为了纪念自己的蠢,特意留下来提醒自己别再犯蠢,这个问题重复出现不下与三次了。OpenCV中有两个函数的功能很容易搞混,我就搞混好几次了convertTo——用来切换数据类型,如float类型变为uchar类型,但是不可用来改变通道数,也就是说不能将灰度图转化为彩色图cvtColor——用来转换图像的颜色,也就是改变通道数,可以将灰度图像转化为彩色图像这里一定要记住convertTo不能改变通道数,convertTo不能改变通道数,convertTo不能改变通道数,重要的事情说三遍。...

2021-01-13 17:24:48 564 2

原创 OpenCV——堆损坏

在使用OpenCV的getUMatVector的时候出现了报错,提示堆损坏,上网查找之后发现是dll有问题产生的。之前调过一次OpenCV的版本,当时将dll给替换了,所以这里会报错,将dll还原后就不再出现这个问题了。这个问题出现的时候会显示.exe触发了一个断点,但是触发断点的位置不确定,这个时候可以考虑是不是堆损坏,也就是dll可能有问题。另外出现触发一个断点之类的错误一般还会与内存有关,没有分配内存,泄露,非法访问等。这里作为记录参考。...

2021-01-05 14:51:05 403

原创 OpenCV总结5——roi数据显示错误

OpenCV中提供了roi的用法:Mat image = imread("1.jpg", 0);Rect rect(100, 100, 400, 400);Mat mat = image(rect);Mat mat1(mat.size(), mat.type(), mat.data);上面的代码中image和mat是可以正常显示的,但是mat1显示的数据是错误的。这里有一个问题,因为通过roi截取的图像底层的数据是一份,也就是说通过roi操作的是原图像(没有进行clone的前提下)。如果通过c

2020-12-03 17:32:50 1707

原创 OpenCV总结4——CV_INSTRUMENT_REGION()

在opencv函数的源码中很多都会出现CV_INSTRUMENT_REGION这个宏,查了一下资料,是opencv用来监控函数执行情况的。Instrumentation framework for OpenCV performance test system. It wasdeveloped to:track implementations execution inside OpenCV functions with call treeoutput to test logstrack implem

2020-11-26 14:36:12 4151

原创 向量叉乘判断顺时针还是逆时针

可以通过向量的叉乘判断一条线旋转的过程是顺时针还是逆时针的。有两个向量AB和AC,将两个向量进行叉乘:direct = AB x AC当direct>0时,为逆时针旋转,当direct<0时为顺时针旋转。当写类似于旋转按钮的控件的时候可以用到。可以通过两种方式进行角度的计算,一种是通过标量采用余弦定理:cosA=(B2+C2−A2)/2BCcosA = (B^ 2+C^2-A^2)/2BC cosA=(B2+C2−A2)/2BC另一种通过向量进行角度的计算:cosa=(x1∗x

2020-11-03 10:21:05 7859

原创 OpenGL总结16——深度测试下融混显示黑色

以下问题均发生在GL_MODELVIEW模式下。首先,在GL_MODELVIEW模式下要使用深度测试,否则图像会产生一种前后不分的效果。在编写三维图像的显示的过程中用到了透明度和融混的操作,但是在使用后发现显示有问题,图像使用融混后不能使用深度测试,否则图像的背面是黑色如果不使用深度测试就没办法判断前后顺序,混合就会按照输入的顺序进行,所以背面的图像会像是翻到前面来,但是如何使用深度测试,就会出现图像变为黑色,如果同时还是用了透明度测试,则图像会变暗,背面的透明度像是失效了一样。举个例子,正常的绘图顺

2020-10-16 10:12:02 596

原创 vs2015中cuda提示<<<>>>需要输入表达式

在vs2015中写cuda代码进行编译时发现在调用核的时候<<<>>>总是提示有错误,编译提示输入表达式,但是编译是通过的。我的这个文件类型是cuda文件.cu,因为在vs中使用的是c++的语法提示,所以这个地方总是报错,但是因为是cuda文件符合cuda的语法,所以编译本身是通过的,所以这里可以忽略它,不影响。但是如果在cpp中出现这个问题需要进行一下处理,因为cpp中是没有<<<>>>这个调用语法的,所以不能这个写,需要声明ex

2020-09-27 10:35:55 9493 5

原创 vs2015 c++项目中添加cuda文件

因为编程需要c++与cuda进行混合,本来没想用cuda,但是速度跟不上,所以添加了cuda,但是发现编译的时候怎么都不对,需要进行一定的设置。为项目添加依赖项右击项目->生成依赖项->生成自定义->CUDA9.2->确定添加cuda文件source file->添加->新建项->NVIDIA CUDA 9.2->输入文件名->确定设置cuda的编译器如果不设置为cuda的编译器则这个文件无法执行cuda。cuda文件右击->

2020-09-25 14:37:42 2383

原创 CUDA总结2——cudaMemcpy

在使用cuda的时候一定会用到cudaMemcpy这个函数,因为我们就是用它实现数据在CPU与GPU之间的移动,想在GPU端计算就必须要将数据从CPU拷贝到GPU,想要获得GPU的计算结果就必须将结果拷贝回CPU。但是在使用这个函数的时候对它的第一个参数存在一些疑惑,经过查找资料后做个简单的总结。首先cudaMemcpy的第一个参数是void**类型,可以看出是一个指向指针的指针,换一种比较好理解的方式可以说是指针的地址,正常我们定义指针:float *a;//定义一个指针a = (float*)m

2020-09-25 11:14:58 8352

原创 QT总结12——QPoint和QPointF在显示上的差别

在做项目的过程中遇到了,所以记录一下。QT提供了QPoint和QPointF两种类型,可以看到他们两个的精度是不同的,在计算的时候有人喜欢用浮点数进行计算提升精度。我处理的大多是图像,图像肯定是按照像素算的,所以坐标一般都是整型,我发现他们用浮点型计算后绘图采用的仍然是浮点型,这样会造成在绘图的时候出现微妙的偏差。打个比方,将两张图叠在一起,这个时候会出现细微的偏差,不仔细观察发现不了,但是因为项目需求对显示要求比较高,所以不希望出现偏差,这个时候就要使用QPoint来显示,这样每次显示位置是一样的。

2020-09-21 15:34:12 2474

原创 QT总结11——QMediaPlayer无法显示视频

利用Qt做个播放器玩,发现使用Qt中的QMediaPlayer无法显示视频,没有画面也没有声音,开始以为自己写错了,但是查了很久都没发现错误,之后上网查找资料,发现可能是因为没有视频解码器,因为Qt本身不自带视频解码器,所以想要使用QMediaPlayer得自己另装。查了资料,发现大部分推荐安装LAVFilters,我先安装了LAVFilters,安装的时候要注意安装到Qt的安装目录下,否则Qt无法使用。安装完成后发现视频可以正常显示,但是特别的卡顿同时出现严重的花屏,找了很久也没发现原因。后来看到一篇博

2020-09-15 17:08:14 4355 8

原创 CUDA总结1——OpenCV与CUDA简介

因为算法的需要,正常的CPU算法速度不够需要进行加速,OpenCV中正好加入了GPU计算的模块,OpenCV中有两种GPU的加速方式,一种是通用标准的opencl,另一种是NVIDIA的cuda加速。opencl是苹果公司提出的一种通用标准,多种平台支持的标准。cuda是NVIDIA提出的并行计算平台,只有NVIDIA的显卡支持,但是比起opencl,cuda在使用上更方便,因为opencl是开放标准,封装上做的可能没有那么好,现在NVIDIA的显卡使用的多一些,所以cuda也就比较多用。使用OpenCV

2020-09-11 15:54:25 5192

原创 C++——effective C++ 55个具体做法总结

让自己习惯c++1、c++可以看成是多种语言的集合:C:c++基于c,所以c语法是通用的,包括数组的一系列常用到的东西。Object-Oriented c++:包括类、封装、继承、多态等类属性泛型编程:是比较高级的编程技术,用的可能比较少STL:我们常用到的容器库使用的时候根据使用语言的不同有不同的约束,具体参考具体语言,他们并不是遵守统一的规则。2、尽量以const、enum、inline 、替换#define因为#define是直接在预处理器中处理,代码中直接使用字符替换,因此编译器

2020-09-10 15:54:37 625

原创 OpenCV总结3——图像拼接Stitching

之前折腾过一段时间配准发现自己写的一点都不准,最近需要进行图像的拼接,偶然的机会查到了opencv原来有拼接的库,发现opencv处理配准之外还做了许多的操作,就这个机会查找了相关的资料,同时也研究了以下他的源代码,做一个简单的总结。Stitching因为OpenCV已经将算法进行了高度的封装,所以用起来跟OpenGL类似,遵循了一条管线进行处理。上图是OpenCV官方网站中提供的流程图。从这个图中我们也能看出这是一个很复杂的过程,源代码中提到了七个部分:Features Finding an

2020-08-28 16:19:53 11657 23

openh264-1.8.0-win64.dll.bz2

OpenCV4.1的编码版本

2021-04-02

空空如也

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

TA关注的人

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