【openCV】- 图像处理基本操作

一、图像显示

#include <iostream>
#include <opencv2\opencv.hpp>

Mat mm = imread("girl.jpeg");
    imshow("girl", mm);   //显示函数
    waitKey(0);    //等待按下键

 原图:

二、图像腐蚀

  Mat element = getStructuringElement(MORPH_RECT, Size(10, 10));  //element为指定形状和尺寸的内核矩阵结构元素
    Mat dstImage;
    erode(mm, dstImage, element);   //进行图像腐蚀操作
    imshow("girl-腐蚀", dstImage);
    waitKey(0);

结果:

三、图像模糊

 Mat implicitpic;
    blur(mm, implicitpic, Size(7, 7));   //模糊操作
    imshow("均值滤波的模糊图", implicitpic);
    waitKey(0);

结果: 

四、canny边缘检测

1. 一般的边缘检测

#include <iostream>
#include <opencv2\opencv.hpp>
using namespace cv;

int main()
{
  

    //四、canny边缘检测
    //要包含proc库文件,CV_BGR2GRAY
//#include <opencv2\imgproc\types_c.h>
    Mat edge, edge1,test;
    Mat yuan = imread("girl.jpeg");
    cvtColor(yuan, test, COLOR_BGR2GRAY); //转换为灰度值图像
    imshow("灰度图1", test);


    Mat grayImage = imread("girl.jpeg", IMREAD_GRAYSCALE); //直接以灰度图格式读入也可以
    imshow("灰度图2", grayImage);
    //flag=-2为默认
    //flag=0为灰度图
    //flag=66为三通道原彩
    //flag=2|4为无损原图像
    

    blur(test, edge, Size(3, 3));  //yonog用3*3的均值滤波来降噪
    Canny(edge, edge1, 3, 9, 3);
    imshow("边缘检测", edge1);
    waitKey(0);





    return 0;
}

 结果:

2. 彩色的边缘检测

ps:copyTo()

(1)image.copyTo(ROI);
就是把image这张图复制(copy to)到ROI上。

(2)image.copyTo(ROI,mask);
则是不仅把image这张图复制(copy to)到ROI上,且image对应mask中像素值为0的像素点都不会贴到ROI上,mask为掩膜。

#include <iostream>
#include <opencv2\opencv.hpp>
using namespace cv;

int main()
{
  
 
 Mat image = imread("girl.jpeg"); //直接以灰度图格式读入也可以
            imshow("原图", image);
            Mat gray, edge, edge1, pict;

                cvtColor(image, gray, COLOR_BGR2GRAY);
            blur(gray, edge, Size(3, 3));  //yonog用3*3的均值滤波来降噪
            Canny(edge, edge1, 3, 9, 3);

           // 定义一个图属性
            pict.create(image.size(), image.type());
            pict = Scalar::all(0);
            image.copyTo(pict, edge1);//edge1作为掩膜,把image通过掩膜复制到pict中
            imshow("彩色边缘检测", pict);
            waitKey(0);


return(0)
}

 结果:

 

五、图像混合

Mat girl = imread("girl.jpeg");
    namedWindow("tu");
    imshow("tu", girl);
    waitKey();
  
    Mat ff = imread("flower.jpeg");
    namedWindow("hua2");
    imshow("hua2", ff);
    waitKey(0);

    //dingyi定义一个mat类型,用于存放图像的roi
    Mat imageROI2,imageROI;
    imageROI = girl(Rect(100, 100, ff.cols, ff.rows)); //再原图中裁剪一部分,位置加大小,修改imageroi会直接修改原图
    //Mat imageROI = image(Rect(350, 350+f.cows),Rect(800,800+f.cols));

    //j讲花加到原图上
    addWeighted(imageROI, 0.5, ff, 0.3, 0., imageROI);  //两张图片不同的权重混合,并输出到
    imshow("h", imageROI);
    waitKey();
    imshow("h混合", girl);

    //b保存
    imwrite("h混合图片.jpg", girl);
    waitKey();

(1)新图:

 (2)局部混合图:

(3)被混合后的女孩图:

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

繁荣生长

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

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

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

打赏作者

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

抵扣说明:

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

余额充值