zoukankan      html  css  js  c++  java
  • 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;
    }

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

  • 相关阅读:
    Java实现LeetCode_0041_FirstMissingPositive
    Java实现 Leetcode 169 求众数
    Java实现 LeetCode 137 只出现一次的数字
    Java实现 LeetCode 137 只出现一次的数字
    Java实现 Leetcode 169 求众数
    TimeUnit用法
    第六章:任务执行——Java并发编程实战
    Java实现的并发任务处理实例
    java三大框架实现任务调度——IRemindService
    如何在一个div中使其子div居中
  • 原文地址:https://www.cnblogs.com/oldhuang/p/10139992.html
Copyright © 2011-2022 走看看