ubuntu下基于c++的opencv学习

一、环境配置

  1、安装opencv

  2、makefile编写

    makefile模板,与c++文件在同一个目录下,用make指令生成可执行文件,然后运行。

TARGET=./demo   #目标文件
SRCS:=$(wildcard ./src/*.cpp ./*.cpp)
OBJS:=$(patsubst %cpp,%o,$(SRCS))
CFLG = -g -Wall -I/usr/local/include -Iinc -I./ -std=c++11 
LDFG = -Wl,-rpath,/usr/local/lib -L./ -L/usr/local/lib -L./inc -lrt -lpthread -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_videoio `pkg-config opencv --cflags --libs ` 
CXX = g++ 
$(TARGET) : $(OBJS) 
    $(CXX) -o $(TARGET) $(OBJS) $(LDFG) 
%.o:%.cpp 
    $(CXX) $(CFLG) -c $< -o $@
.PHONY : 
clean clean: 
    -rm ./*.o -rm ./src/*.o -rm ./bin/*

  3、cmake安装

    cmake可以说是一个经过封装的makefile,先安装cmake,然后在CMakeLists.txt文件中更改参数就可以利用cmake指令创建makefile,然后再执行make指令生成可执行文件。

二、初识opencv

  1、第一个程序:图像读取和图像显示  

//显示图像dota.JPEG
1
#include<opencv2/opencv.hpp>   2 using namespace cv; 3 4 int main(int argc,char **argv) 5 { 6 Mat img=imread("dota.JPEG");    //Mat类 imread图像读取 7 namedWindow("logo");         //窗口创建 8 imshow("logo",img);         //Mat类 imshow图像显示 9 waitKey();                 10 return 0; 11 }

  2、图像腐蚀

//对图像bee,jpg腐蚀
1
#include <opencv2/opencv.hpp> 2 using namespace cv; 3 int main(int argc,char **argv) 4 { 5 Mat srcImg=imread("bee.jpg"); 6 imshow("begin",srcImg); 7 Mat element =getStructuringElement(MORPH_RECT,Size(5,5)); 8 Mat dstImg; 9 erode(srcImg,dstImg,element);//srcImg为原图 dstImg为腐蚀后的图 element为上面getStructuringElement(MORPH_RECT,Size(5,5)返回的值(内核矩阵) 10 imshow("after",dstImg); 11 waitKey(0); 12 return 0; 13 }
 
 

  3、图像模糊

 1 #include <opencv2/opencv.hpp>
 2 using namespace cv;
 3 int main(int argc,char **argv)
 4 {
 5 Mat srcImg=imread("social.jpg");
 6 imshow("begin",srcImg);
 7 Mat dstImg;
 8 blur(srcImg,dstImg,Size(8,8));
 9 imshow("after",dstImg);
10 waitKey(0);
11 return 0;
12  }
 
 

  4、canny算子

#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc,char** argv)
{
Mat srcImg=imread("ox.jpg");
imshow("begin",srcImg);
Mat grayImg,dstImg;
cvtColor(srcImg,grayImg,CV_BGR2GRAY);//图像变为灰度图像
blur(grayImg,dstImg,Size(4,4));//图像模糊
Canny(dstImg,dstImg,3,3,3);
imshow("after",dstImg);
waitKey(0);
return 0;
}

  5、摄像头读取处理

#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
    Mat edges;
    VideoCapture capture(0);//从摄像头写入视频
    capture.open(0);
    while(1){
        Mat frame;
        capture>>frame;//读取当前帧
        imshow("orginal",frame);
        cvtColor(frame,edges,COLOR_BGR2GRAY);
        blur(edges,edges,Size(6,6));
        Canny(edges,edges,0,22,3);
        imshow("change",edges);
        waitKey(10);
    }
    return 0;
}

 

学习中,持续更新....

转载于:https://www.cnblogs.com/oldhuang/p/10139992.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值