Ubuntu下C++ opencv详细教程,句句注释

Python opencv学习:https://blog.youkuaiyun.com/qq_34717531/article/details/107402545

一、读图并显示

首先建立一个工程项目C++,其中有read.cpp ,CMakeLists.txt ,和一张美照。

其中,read.cpp

//该头文件中已经包含了OpenCV中各个模块的头文件
#include<opencv2/opencv.hpp>

//cv 命名空间,如果希望不要每次都输入 cv:: ,则可使用下面语句:using namespace cv;
using namespace cv;

/*
int main(int argc, char **argv) 用于运行时,把命令行参数传入主程序。
argc -- 命令行参数总个数,包括可执行程序名。
argv[i] -- 第 i 个参数。
argv[0] -- 可执行程序名。
例如运行: abc.exe
argc 等于 1, argv[0] 是 "abc.exe"
例如运行:rec.exe 4 5.2
argc 等于 3, argv[0] 是 "rec.exe", argv[1] 是 "4", argv[2] 是 "5.2".
*/
int main(int argc,char **argv)
{
    //Mat是c++中类的概念,不再需要手动分配其内存大小,当不需要使用它的时候也不再需要手动释放它
    Mat img=imread("1.jpg");
    //和Python opencv的写法相同,展示图像
    imshow("meinv",img);
    //waitKey()是OpenCV中的内置函数,语句waitKey(0);表示“暂停程序,等待一个按键输入”!也就是说,当程序执行到waitKey(0);时,程序被暂停运行,只有当你输入一个按键时,它才会继续运行。
    waitKey(0);
}

 其中CMakeLists.txt 可以在 opencv-3.4.5 / samples / cpp / example_cmake /中找到,

 修改工程名 test 和 cpp 文件名 read.cpp 即可使用。

# cmake needs this line
cmake_minimum_required(VERSION 2.8)

# Define project name
project(test)

# Find OpenCV, you may need to set OpenCV_DIR variable
# to the absolute path to the directory containing OpenCVConfig.cmake file
# via the command line or GUI
find_package(OpenCV REQUIRED)

# If the package has been found, several variables will
# be set, you can find the full list with descriptions
# in the OpenCVConfig.cmake file.
# Print some message showing some of them
message(STATUS "OpenCV library status:")
message(STATUS "    version: ${OpenCV_VERSION}")
message(STATUS "    libraries: ${OpenCV_LIBS}")
message(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}")

if(CMAKE_VERSION VERSION_LESS "2.8.11")
  # Add OpenCV headers location to your include paths
  include_directories(${OpenCV_INCLUDE_DIRS})
endif()

# Declare the executable target built from your sources
add_executable(test read.cpp)

# Link your application with OpenCV libraries
target_link_libraries(test ${OpenCV_LIBS})

编译,运行。

cmake .
make
./test

 

二、读图转灰度图并保存

为节约篇幅,之前注释过的不再注释。

新建 zhuan.cpp ,修改CMakeLists.txt 的对应名字即可。

#include<opencv2/opencv.hpp>

using namespace cv;

int main(int argc,char **argv)
{
    Mat img=imread("1.jpg");
    imshow("meinv",img);
    //转灰度cvtColor():第一个img转化为第二个img,由rgb转为gray
    cvtColor(img,img,CV_BGR2GRAY);
    imshow("gray",img);
    //和Python opencv一样,保存图像
    imwrite("gray.jpg",img);
    waitKey(0);
}

报错,将CV_BGR2GRAY改为了COLOR_BGR2GRAY即可.

三、Canny边缘检测并保存

新建canny.cpp

#include<opencv2/opencv.hpp>

using namespace cv;

int main(int argc,char **argv)
{
    Mat img=imread("1.jpg");
    imshow("meinv",img);
    cvtColor(img,img,CV_BGR2GRAY);
    //图像模糊
    blur(img,img,Size(4,4));
    //canny运算
    Canny(img,img,3,3,3);
    imshow("Canny",img);
    imwrite("canny.jpg",img);
    waitKey(0);
}

CMakeLists.txt 同理修改。

四、读取视频做Canny边缘检测

新建shi.cpp

#include<opencv2/opencv.hpp>

using namespace cv;

int main(int argc,char **argv)
{
    //读取视频
    VideoCapture capture("1.mp4");
   
    //执行循环,到视频结束为止
    while(1){
        //定义frame
        Mat frame;
        //读取每一帧
        capture>>frame;
        imshow("meinv",frame);
        cvtColor(frame,frame,CV_BGR2GRAY);
        blur(frame,frame,Size(4,4));
        Canny(frame,frame,3,60,3);
        imshow("Canny",frame);
        waitKey(10);
    }
    return 0;
}

五、读取视频并画矩形框

#include<opencv2/opencv.hpp>
using namespace cv;
int main(int argc,char **argv)
{
    VideoCapture capture("chou2.mp4");
    while(1){
        Mat frame;
        capture>>frame;
        cv::Rect area(50, 50, 200, 100); 
        cv::rectangle(frame, area, cv::Scalar(0, 0, 255), 3, 8); 
        imshow("c",frame);
        waitKey(10);
    }
}

解压到sln一级目录项目属性 C/C++ 附加包含目录 填写Libs/x86/opencv_v3.4.0/include路径 属性中链接器,所有选项附加库目录填写Libs/x86/opencv_v3.4.0/lib 附加依赖项: opencv_aruco340.lib;f.lib;opencv_bgsegm340.lib;opencv_bgsegm340d.lib;opencv_bioinspired340.lib;opencv_bioinspired340d.lib;opencv_calib3d340.lib;opencv_calib3d340d.lib;opencv_ccalib340.lib;opencv_ccalib340d.lib;opencv_core340.lib;opencv_core340d.lib;opencv_datasets340.lib;opencv_datasets340d.lib;opencv_dnn340.lib;opencv_dnn340d.lib;opencv_dpm340.lib;opencv_dpm340d.lib;opencv_face340.lib;opencv_face340d.lib;opencv_features2d340.lib;opencv_features2d340d.lib;opencv_flann340.lib;opencv_flann340d.lib;opencv_fuzzy340.lib;opencv_fuzzy340d.lib;opencv_highgui340.lib;opencv_highgui340d.lib;opencv_imgcodecs340.lib;opencv_imgcodecs340d.lib;opencv_imgproc340.lib;opencv_imgproc340d.lib;opencv_img_hash340.lib;opencv_img_hash340d.lib;opencv_line_descriptor340.lib;opencv_line_descriptor340d.lib;opencv_ml340.lib;opencv_ml340d.lib;opencv_objdetect340.lib;opencv_objdetect340d.lib;opencv_optflow340.lib;opencv_optflow340d.lib;opencv_phase_unwrapping340.lib;opencv_phase_unwrapping340d.lib;opencv_photo340.lib;opencv_photo340d.lib;opencv_plot340.lib;opencv_plot340d.lib;opencv_reg340.lib;opencv_reg340d.lib;opencv_rgbd340.lib;opencv_rgbd340d.lib;opencv_saliency340.lib;opencv_saliency340d.lib;opencv_shape340.lib;opencv_shape340d.lib;opencv_stereo340.lib;opencv_stereo340d.lib;opencv_stitching340.lib;opencv_stitching340d.lib;opencv_structured_light340.lib;opencv_structured_light340d.lib;opencv_superres340.lib;opencv_superres340d.lib;opencv_surface_matching340.lib;opencv_surface_matching340d.lib;opencv_text340.lib;opencv_text340d.lib;opencv_tracking340.lib;opencv_tracking340d.lib;opencv_video340.lib;opencv_video340d.lib;opencv_videoio340.lib;opencv_videoio340d.lib;opencv_videostab340.lib;opencv_videostab340d.lib;opencv_xfeatures2d340.lib;opencv_xfeatures2d340d.lib;opencv_ximgproc340.lib;opencv_ximgproc340d.lib;opencv_xobjdetect340.lib;opencv_xobjdetect340d.lib;opencv_xphoto340.lib;opencv_xphoto340d.lib;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学术菜鸟小晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值