OpenCV图像处理基础操作

目录

一:读取显示图片操作

二:图像处理   像素点操作

2.1   雪花屏特效

2.2   色彩反转

2.3   暗色处理 

2.4   毛玻璃特效

三:图像处理   调用OpenCV库 封装函数 

3.1   高斯模糊 [就好像 近视眼的人没有戴眼镜看事物的情境---轻度近视]

3.2   XY轴模糊 [就好像 近视眼的人没有戴眼镜看事物的情境---重度近视]

3.3   灰度化处理

3.4   中值滤波  视觉上就感觉像是油画

四:OpenCV   视频操作

4.1   播放视频:那些年,我们一起追的女孩

4.2   使用本机摄像头


一:读取显示图片操作

读取图片的路径选择,这里注意点是window下 \ 但是在ubuntu下是 / 在编写代码的时候需要修正

OpenCV图像处理基础操作_第1张图片

读取图片代码:

#include 
#include 
using namespace std;
using namespace cv;

int main(int argc, char *argv[])
{
    Mat img = imread("D:/000imageopencv/333.jpg");//图片路径

    imshow("img",img);//显示图片

    waitKey(0);//等待按键

    return 0;
}

结果:

OpenCV图像处理基础操作_第2张图片

对图片可以滚轮放大查看RGB数值,不难看出,越是深色RGB数值越是接近0,越是浅色RGB数值越是接近255

OpenCV图像处理基础操作_第3张图片

OpenCV图像处理基础操作_第4张图片

 查看分辨率 499 X 355,同时将鼠标移动至图片边缘处(看到 x=498,y=334 博主已经很尽力移到边缘啦,如果不信,你们自己操作一下,哈哈),由此可以知道图片就是由一个又一个的像素点构成的。

OpenCV图像处理基础操作_第5张图片

OpenCV图像处理基础操作_第6张图片

二:图像处理   像素点操作

2.1   雪花屏特效

OpenCV图像处理基础操作_第7张图片

相关代码如下:

#include 
#include 
using namespace std;
using namespace cv;

Mat imageprocess(Mat &img)
{
    int row = img.rows;
    int col = img.cols * img.channels();

    for(int i=0;i(i);
        for(int j=0;j

2.2   色彩反转

OpenCV图像处理基础操作_第8张图片  

相关代码如下: 

Mat imageprocess(Mat &img)
{
    int row = img.rows;
    int col = img.cols * img.channels();

    for(int i=0;i(i);
        for(int j=0;j

2.3   暗色处理 

OpenCV图像处理基础操作_第9张图片

相关代码如下: 

Mat imageprocess(Mat &img)
{
    int row = img.rows;
    int col = img.cols * img.channels();

    for(int i=0;i(i);
        for(int j=0;j

2.4   毛玻璃特效

OpenCV图像处理基础操作_第10张图片

相关代码如下:

#include 
#include 
using namespace std;
using namespace cv;

//毛玻璃特效
Mat imageGalss(Mat &img)
{
    RNG rng;
    int random = 0;
    int num = 5;
    for(int i=0;i(i,j)[0] = img.at(i+random,j+random)[0];
            img.at(i,j)[1] = img.at(i+random,j+random)[1];
            img.at(i,j)[2] = img.at(i+random,j+random)[2];
        }
    }
    return img;
}

int main(int argc, char *argv[])
{
    Mat img = imread("D:/000imageopencv/333.jpg");//图片路径
    imshow("img",img);//显示图片

    Mat resimg = imageGalss(img);
    imshow("resimg",resimg);//显示接收图片

    waitKey(0);//等待按键
    return 0;
}

三:图像处理   调用OpenCV库 封装函数 

3.1   高斯模糊 [就好像 近视眼的人没有戴眼镜看事物的情境---轻度近视]

OpenCV图像处理基础操作_第11张图片

相关代码如下:

#include 
#include 
using namespace std;
using namespace cv;

int main(int argc, char *argv[])
{
    Mat img = imread("D:/000imageopencv/333.jpg");//图片路径
    imshow("img",img);//显示图片

    Mat resimg;
    //高斯模糊
    cv::GaussianBlur(img,resimg,Size(5,5),0);

    imshow("resimg",resimg);//显示接收图片

    waitKey(0);//等待按键
    return 0;
}

3.2   XY轴模糊 [就好像 近视眼的人没有戴眼镜看事物的情境---重度近视]

OpenCV图像处理基础操作_第12张图片

相关代码如下:

#include 
#include 
using namespace std;
using namespace cv;

int main(int argc, char *argv[])
{
    Mat img = imread("D:/000imageopencv/333.jpg");//图片路径
    imshow("img",img);//显示图片

    Mat resimg;
    //XY轴模糊
    cv::blur(img,resimg,Size(10,10));
    imshow("resimg",resimg);//显示接收图片

    waitKey(0);//等待按键
    return 0;
}

3.3   灰度化处理

OpenCV图像处理基础操作_第13张图片

相关代码如下: 

#include 
#include 
using namespace std;
using namespace cv;

int main(int argc, char *argv[])
{
    Mat img = imread("D:/000imageopencv/333.jpg");//图片路径
    imshow("img",img);//显示图片

    Mat resimg;
    //灰度处理
    cvtColor(img,resimg,CV_BGR2GRAY);
    imshow("resimg",resimg);//显示接收图片

    waitKey(0);//等待按键
    return 0;
}

3.4   中值滤波  视觉上就感觉像是油画

OpenCV图像处理基础操作_第14张图片

相关代码如下:

#include 
#include 
using namespace std;
using namespace cv;

int main(int argc, char *argv[])
{
    Mat img = imread("D:/000imageopencv/333.jpg");//图片路径
    imshow("img",img);//显示图片

    Mat resimg;
    //中值滤波
    cv::medianBlur(img,resimg,5);
    imshow("resimg",resimg);//显示接收图片

    waitKey(0);//等待按键
    return 0;
}

四:OpenCV   视频操作

4.1   播放视频:那些年,我们一起追的女孩

OpenCV图像处理基础操作_第15张图片

OpenCV图像处理基础操作_第16张图片

OpenCV图像处理基础操作_第17张图片

#include 
#include 
using namespace std;
using namespace cv;

int main(int argc, char *argv[])
{
    Mat frame;
    VideoCapture cap("D:/000000000000000ffmpeg/那些年,我们一起追的女孩.mp4");

    while (cap.read(frame))
    {
        imshow("frame",frame);
        waitKey(50);
    }
    return 0;
}

 4.2   使用本机摄像头

这边博主就不露脸了哈!

OpenCV图像处理基础操作_第18张图片

#include 
#include 
using namespace std;
using namespace cv;

int main(int argc, char *argv[])
{
    Mat frame;
    VideoCapture cap(0);

    while (cap.read(frame))
    {
        imshow("frame",frame);
        waitKey(50);
    }
    return 0;
}

OpenCV图像处理基础操作_第19张图片 

你可能感兴趣的:(opencv,图像处理,计算机视觉)