【C/C++基础&优化】
专注记录C/C++的基础知识与优化
小武~~
静心尽力,总结沉淀!
关注 OpenImage,我们坚持开源,可以一起分享、学习图像处理相关的小知识,获取或分享学习资源,还可以和博主以及其他小伙伴们一起交流学习哦。
展开
-
mwArray和cv::Mat互相转化函数
最近用C++/OpenCV调用MATLAB函数,有必要专门把这两个函数拿出来记录一下。需要注意的是,Mat2mwArry函数的输入Mat类型是 CV_64FC1,灰度图。如果要传递多通道图像的话,需要先cv::split()成多个灰度图像分别传给matlab。mwArray2Mat的返回Mat的类型是CV_64FC1,可以通过cv::Mat::convert()转化成所需要的类型...转载 2019-11-19 22:13:24 · 1501 阅读 · 0 评论 -
如何在C++程序(工程)中调用Matlab函数
C++调用Matlab主要有两种方式,一种是调用Matlab的计算引擎,即调用Matlab本身;另一种是调用matlab中由mcc编译生成的dll文件,这种方法是Matlab利用C++ Complier将m文件转化为C++源码,产生能够完全脱离Matlab运行环境独立执行的DLL程序,从而能够在C++程序中调用DLL实现对Matlab代码的利用。不过,需要说明的是,C++的编译速度是要比Mat...转载 2019-11-19 21:57:27 · 6775 阅读 · 3 评论 -
【面试题】——C++ vector和list的区别
C++ vector和list的区别1.vector数据结构vector和数组类似,拥有一段连续的内存空间,并且起始地址不变。因此能高效的进行随机存取,时间复杂度为o(1);但因为内存空间是连续的,所以在进行插入和删除操作时,会造成内存块的拷贝,时间复杂度为o(n)。另外,当数组中内存空间不够时,会重新申请一块内存空间并进行内存拷贝。2.list数据结构list是由双向链表实现的...转载 2019-08-25 09:39:41 · 411 阅读 · 0 评论 -
使用VS2013运行.exe出错系列解决办法
问题一:在VS中运行编译程序正常,但运行生成的.exe出现“无法打开某某文件”的问题: 无法打开这些文件夹,就是在.exe目录下没有改文件夹,所以找不到。解决办法:将这些文件全部放在.exe目录下。拓展:当然还会出现“无法加载某某模型”,“无法找到某某”,.......诸如此类的问题,我们只需将报错打不开的这些文件统统放在.e...原创 2019-06-13 15:37:47 · 2301 阅读 · 0 评论 -
VS出现LNK2038: mismatch detected for 'RuntimeLibrary': value 'MDd_DynamicDebug' 不匹配解决办法
在工程上右键-》属性-》c/c++-》代码生成-》运行库因为所选的工程运行库选择错误导致的。其中四个选项的对应含义如下:多线程调试Dll (/MDd) 对应的是MD_DynamicDebug多线程Dll (/MD) 对应的是MD_DynamicRelease多线程(/MT) 对应的是MD_StaticRelease多线程(/MTd)对应的是MD_StaticDebug这...原创 2019-06-13 15:14:19 · 3440 阅读 · 1 评论 -
C语言不同数据类型间的混合运算转换规则+常见数据类型
在程序中经常会遇到不同类型的数据进行运算,若一个运算符两侧的数据类型不同,则先自动进行类型转换,使两者具有同一类型,然后进行运算,现将规律总结如下:1. +. -. *. /运算的两个数中有一个数为float或double型,结果是double型,因为系统将所有float型数据都先转换为double型,然后进行运算;2. 若int型与float或double型数据进行运算,先将int型和f...转载 2019-05-04 15:56:51 · 9286 阅读 · 0 评论 -
opencv学习笔记之十五——最小外接矩形(RotatedRect返回角度angle问题)
最近在看一个车牌识别开源项目时,对其中RotatedRect的角度属性理解得不清楚,也查找了大量博客,得出了基本结论,最后通过实验进一步进行了验证。RotatedRect该类表示平面上的旋转矩形,有三个属性:矩形中心点(质心) 边长(长和宽) 旋转角度旋转角度angle的范围为[-90,0),当矩形水平或竖直时均返回-90,请看下图:来源:https://blog.csdn....原创 2018-07-02 16:07:46 · 17833 阅读 · 14 评论 -
VS2010/MFC编程入门教程之目录和总结(鸡啄米)
鸡啄米的这套VS2010/MFC编程入门教程到此就全部完成了,虽然有些内容还未涉及到,但帮助大家进行VS2010/MFC的入门学习业已足够。以此教程的知识为基础,学习VS2010/MFC较为深入的内容已非难事。作为本教程的最后一课,鸡啄米将对前面所讲内容进行目录归纳,并对这八个月加班加点的努力进行总结。 一、VS2010/MFC编程入门教程之目录 第一部分:VS2010...转载 2018-05-23 16:31:21 · 2137 阅读 · 0 评论 -
Canny算子边缘检测详细原理(OpenCV+MATLAB实现)
最近老师布置了一个边缘检测的作业,我借此机会详细学习了一下canny算子,在此进行总结,并分别给出OpenCV代码和MATLAB代码,自己水平有限,若有错误或者更好的编程方法,请广大网友留言,一定虚心学习。好了废话少说,直接开始吧。基本原理须满足条件:抑制噪声;精确定位边缘。 从数学上表达了三个准则[信噪比准则(低错误率)、定位精度准则、单边缘响应准则],并寻找表达式的最...原创 2018-05-19 22:11:59 · 11267 阅读 · 8 评论 -
c++虚析构函数的作用
转自:https://blog.csdn.net/derkampf/article/details/62093252C++中的虚析构函数到底什么时候有用的,什么作用呢。 一.虚析构函数的作用 总的来说虚析构函数是为了避免内存泄露,而且是当子类中会有指针成员变量时才会使用得到的。也就说虚析构函数使得在删除指向子类对象的基类指针时可以调用子类的析构函数达到释放子类中堆内存的目的,而防止内存泄露的.我们...转载 2018-05-13 12:11:36 · 466 阅读 · 0 评论 -
C++——成员列表初始化
转自:http://www.cnblogs.com/BlueTzar/articles/1223169.htmlC++类构造函数初始化列表构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式。例如:class CExample {public: int a; float b; //构造函数初始化列表 CExample(...转载 2018-05-11 14:16:25 · 370 阅读 · 0 评论 -
C++的引用
C++引用与指针的比较引用是C++中的概念,初学者容易把引用和指针混淆一起。引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。一下程序中,n是m的一个引用(reference),m是被引用物(referent)。int m;int &n = m;n相当于m的别名(...转载 2018-05-07 19:30:17 · 192 阅读 · 0 评论 -
关于C++的const总结
转载自:https://blog.csdn.net/Eric_Jo/article/details/4138548C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面查到的资料进行总结如下,期望对朋友们有所帮助。Const是C++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。...转载 2018-04-30 22:23:01 · 115 阅读 · 0 评论 -
c++学习【解惑】——源文件和头文件
C++中的头文件和源文件转自:博客园http://www.cnblogs.com/lidabo/archive/2012/04/17/2454568.html一、C++编译模式通常,在一个C++程序中,只包含两类文件——.cpp文件和.h文件。其中,.cpp文件被称作C++源文件,里面放的都是C++的源代码;而.h文件则被称作C++头文件,里面放的也是C++的源代码。C+ +语言支持...转载 2018-04-25 16:47:01 · 206 阅读 · 0 评论 -
嵌入式C语言源代码优化方案(非编译器优化)
嵌入式C语言源代码优化方案(非编译器优化)strongerHuang 9月13日关注、星标公众号,不错过精彩内容作者:王全明转自:嵌入式云IOT技术圈1、选择合适的算法和数据结构选择一种合适的数据结构很重要,如果在一堆随机存放的数中使用了大量的插入和删除指令,那使用链表要快得多。数组与指针语句具有十分密切的关系,一般来说,指针比较灵活简洁,而数组则比较直观,容易理解。对于大部分的编译器,使用指针比使用数组生成的代码更短,执行效率更高。...转载 2020-11-10 17:06:17 · 455 阅读 · 0 评论 -
c++ string转char* 乱码问题全面解决
C++提供了两个函数:c_str()和data()当处理较短的string时,直接调用这两个函数没有出现问题,调用格式如下:std::string str = "Hello Word";char* p1 = str.c_str();char* p2 = str.data();但是,当字符串比较长时,采用这两个函数,转换出来的char* 出现乱码,采用下边这种方式是完全没问题的,故记录在此:char * strc = new char[strlen(str.c_str())+1];s原创 2020-08-26 18:50:47 · 8966 阅读 · 4 评论 -
C++_Primer第五版—第八章—练习8.13—使用ostringstream
#include <iostream>#include <sstream>#include <fstream>#include <string>#include <vector>#include <cctype>using std::vector; using std::string; using std::c...原创 2019-07-22 16:44:13 · 154 阅读 · 0 评论 -
C++_Primer第五版—第四章—4.7节-位运算符练习
//练习4.21#include <iostream>#include <vector>void main(){ std::vector<int> a{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0 ,11,12,13,14}; for (auto i = a.begin(); i != a.end(); ++i){ *i =...原创 2019-07-04 12:07:57 · 242 阅读 · 0 评论 -
C++_Primer第五版—第三章—3.6节-多维数组练习
#include <iostream>void main(){ //练习3.43 int ai[3][4] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; //版本1:范围for for (int (&i)[4] : ai){ //把i绑定到ai的第一个4元素数组上 for (int j : i){ std...原创 2019-07-01 19:33:34 · 164 阅读 · 0 评论