opencv这个图像库两年前就会用了,本科毕业设计就是用的他,不过其中有很多函数直到现在我也没怎么用过。
关于这个库的学习,我自己的目标是只需要学会怎样调用库函数完成目标就可以了,至于原理性的东西我就不去深究了,原理的东西我会在matlab中实现的。
平台是ubuntu+opencv2,具体版本我忘了。不过2之后的应该都可以。
第一个先练手的程序,我尽量用C++版的:
#include "cv.h" #include "highgui.h" #include <iostream> using namespace std; using namespace cv; int main(int argc, char* argv[]) { Mat img1 = imread("maki.jpg"); Mat img2 = imread("misaka.jpg"); int height=img1.rows; //行数 int width=img1.cols; //列数 int dims=img1.dims; //维数 cout<<height<<" "<<width<<" "<<dims<<endl; Mat tmp(height,width,CV_8UC3,Scalar(2,2,2)); //产生一个[height width 3]所有元素全为2的矩阵 Mat re; //运算符重载真是让人喜欢 re=img1+Scalar(100,100,100); //图像相加 imshow("image1", re); re=img1-img2; //图像相减 imshow("image2",re); re=img1*2; //图像和一个数相乘 imshow("image3",re); re=img1/2; //图像和一个数相除 imshow("image4",re); re=img1.mul(tmp); //img1和tmp每个元素相乘 imshow("image5",re); Vec3i s=re.at<Vec3b>(1,1); //数据访问 cout<<s.val[0]<<" "<<s.val[1]<<" "<<s.val[2]<<endl; imwrite("re.jpg",re); waitKey(); return 0; }
vim需要重新设置以方便编译,.exrc文件加入如下代码:
" C++的编译和运行 map <F6> :call CompileRunGpp()<CR> func! CompileRunGpp() exec "w" exec "!g++ `pkg-config opencv --libs --cflags opencv` % -g -o %<" exec "! ./%<" endfunc
以后写完直接按F6就可以编译运行了。
转载于:https://www.cnblogs.com/tiandsp/archive/2013/04/18/3029755.html
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/100826.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...