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;
}

 

學習中,持續更新....


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM