C++学习与OPENCV

c++学习笔记

1,C++环境配置
c++在练习时notepad++(txt)中写好,在cmd中运行。不过要配置一些环境变量。但是在cmd中调用cl,只进行编译而不会运行编译后的代码,如下代码

#include<iostream>
int main()
{
    std::cout<<"Enter two numbers:"<<std::endl;
    int v1=0,v2=0;
    std::cin>>v1>>v2;
    std::cout<<"The sum of"<<v1<<"and"<<v2
    <<"is"<<v1+v2<<std::endl;

    return 0;
}

cmd中编译后,运行编译产生的exe文件可看到输入提示,代码运行。而在VS控制台项目中运行时会让输入v1 和v2,因为VS中编译和运行同时进行。
2,返回值return
return的返回值可以决定此函数完成后是否执行下一步,return 0执行,return -1(或者所有其他非0值),不执行。
3,opencv & C++
opencv配置问题
在配置opencv经常会出现debug能通过release通不过或者release能通过debug通不过的问题。
实际这和我们配置时的选择有关,连接器中输入的附加依赖项的问题不说(末尾d为debug,无d的为release),还有一项如图左上角
这里写图片描述
选择不同自然效果不同。
实际VC++也有管理插件的工具详见:
https://www.zhihu.com/question/24400428
1,imread读图读不到很可能是因为路径不对,最好是用绝对路径
2,关于opencv卷积有两个:filter2D(C++)和cvFilter2D(C)。第一个用于imread获得的Mat数据,第二个用于cvLoadImage获得的数据进行滤波。
既然图的原格式不同,那么核的格式不同,前者核的格式为Mat类型,后者为cvMat结构体
cvFilter的调用形式如下:
double k2_R[2] = { 1.0 / 2, 1.0 / 2 }; CvMat ker2_R = cvMat(1, 2, CV_32FC1, k2_R); CvMat ker2_U = cvMat(2, 1, CV_32FC1, k2_R);
double k2_RU[2][2] = {0}

Mat调用个行和列img.row和img.col。因为row和col为Mat类中一个public变量。
opencv中的filter2D可以进行滤波,根本原理也是图像的卷积,但是需要注意卷积和滤波的区别。两者都是卷积核对应像素相乘,但是卷积是将核旋转180度后对应相乘,而滤波是直接对应相乘。
imread默认以RGB图像进行读入imread(“img”,0);
vector和mat的互转(

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值