opencv進行5種圖像變化:

opencv進行5種圖像變化:ios

1、高斯噪聲:git

#include<opencv2/opencv.hpp>
#include<iostream>
#include "../../opencv/build/include/opencv2/highgui/highgui_c.h"
using namespace cv;
using namespace std;

void gaussian_noise(Mat& image);
int main(int artc, char** argv) {
	Mat src = imread("E:/日出.jpg");
	namedWindow("高斯日出", CV_WINDOW_AUTOSIZE);
	imshow("高斯日出", src);
	gaussian_noise(src);
	waitKey(0);
	return 0;
}
void gaussian_noise(Mat& image) {
	Mat noise = Mat::zeros(image.size(), image.type());
	randn(noise, (15, 15, 15), (30, 30, 30));
	Mat dst;
	add(image, noise, dst);
	imshow("gaussian noise", dst);
}

效果圖:https://raw.githubusercontent.com/zhengmuhe/deep-learning/master/%E9%AB%98%E6%96%AF%E5%99%AA%E5%A3%B0.jpg?token=AMAQWVH6WXUNNCRF4BG5OCK42K5X6github

2、圖像腐蝕:算法

#include<opencv2/highgui/highgui.hpp>        //opencv  highgui模塊頭文件
#include<opencv2/imgproc/imgproc.hpp>        //opencv 圖像處理頭文件
#include<opencv2/opencv.hpp>
using namespace cv;
using namespace std;

int main()
{
	Mat image = imread("E:/日出.jpg");
	imshow("原圖", image);
	Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));//調用getStructuringElement,參數形式見下
	Mat dstimage;
	erode(image, dstimage, element);       //調用erode,參數形式見下
	imshow("腐蝕圖", dstimage);
	waitKey(0);
	return 0;
}

效果圖:https://raw.githubusercontent.com/zhengmuhe/deep-learning/master/%E5%9B%BE%E5%83%8F%E8%85%90%E8%9A%80.jpg?token=AMAQWVBTK3SCGNROA3WVFHS42K55O函數

函數調用:ui

getStructuringElement:Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));

參數形式:第一個參數表示內核的形狀,有三種能夠選擇:矩形:MORPH_RECT;交叉形:MORPH_CROSS;橢圓形:MORPH_ELLIPSE; 第二個參數表示內核的尺寸。spa

erode:erode(image, dstimage, element);

參數形式:第一個參數表示原圖像,第二個參數表示目標圖像,第三個參數表示腐蝕操做的內核(調用getStructuringElement)code

3、圖像模糊:token

#include<opencv2/opencv.hpp>
#include<highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>//圖像處理頭文件
using namespace cv;
using namespace std;
int main()
{
	Mat srcImage = imread("E:/日出.jpg");
	imshow("原圖", srcImage);
	//均值濾波操做
	Mat dstImage;
	blur(srcImage, dstImage, Size(10, 10));//調用blur,參數形式見下
	imshow("模糊圖", dstImage);
	waitKey(0);
	return 0;
}

效果圖:https://raw.githubusercontent.com/zhengmuhe/deep-learning/master/%E5%9B%BE%E5%83%8F%E6%A8%A1%E7%B3%8A.jpg?token=AMAQWVEYUQ4HVBZCOMU6NMS42K6BIip

函數調用:

blur:blur(srcImage, dstImage, Size(10, 10));

參數形式:第一個參數表示原圖,第二個參數表示目標圖,第三個參數表示內核的大小,通常這樣寫Size( w,h )來表示內核的大小( 其中,w 爲像素寬度, h爲像素高度)。

4、canny邊緣檢測:

#include<opencv2/opencv.hpp>
#include<opencv2/imgproc/imgproc.hpp>//圖像處理頭文件
using namespace cv;
using namespace std;
int main()
{
	Mat srcImage = imread("E:/日出.jpg");
	imshow("原圖", srcImage);
	//參數定義
	Mat edge, grayImage;
	//步驟一:將原圖像轉化爲灰度圖像
	cvtColor(srcImage,grayImage,COLOR_BGR2GRAY);//調用cvtColor,參數形式見下
	//步驟二:先使用3x3內核來降噪
	blur(grayImage, edge, Size(3, 3));//調用blur,參數形式見下
	//步驟三:運行canny算子
	Canny(edge, edge, 3, 9, 3);//調用Canny,參數形式見下

	imshow("效果圖", edge);
	waitKey(0);
	return 0;
}

效果圖:https://raw.githubusercontent.com/zhengmuhe/deep-learning/master/canny%E8%BE%B9%E7%BC%98%E6%A3%80%E6%B5%8B.jpg?token=AMAQWVG6G4OZILYBYIEU2XC42K6EY

調用函數:

cvtColor:cvtColor(srcImage,grayImage,COLOR_BGR2GRAY);

參數形式:第一個參數表示原圖,第二個參數表示目標圖,第三個參數COLOR_BGR2GRAY表示灰度圖;

blur:blur(grayImage, edge, Size(3, 3));

參數形式:第一個參數表示原圖,第二個參數表示目標圖,第三個參數表示內核的大小,通常這樣寫Size( w,h )來表示內核的大小( 其中,w 爲像素寬度, h爲像素高度)。

Canny:Canny(edge, edge, 3, 9, 3);

參數形式:第一個參數表示輸入圖像,這個必須是單通道的,即灰度圖。第二個參數表示輸出邊緣圖像 ,也是單通道的,可是是黑白的。第三個參數表示第一個閾值;第四個參數表示第二個閾值。第五個參數表示算子內核大小 。Canny 算法發現輸入圖像的邊緣並且在輸出圖像中標識這些邊緣。兩個閾值中小閾值用來控制邊緣鏈接,大的閾值用來控制強邊緣的初始分割。

五:鏡像:

#include<opencv2/opencv.hpp>
#include<opencv2/imgproc/imgproc.hpp>//圖像處理頭文件
using namespace cv;
using namespace std;
int main()
{
	Mat srcImage = imread("E:/日出.jpg");
	imshow("原圖", srcImage);
	//參數定義
	Mat dstImage1,dstImage2,dstImage3;
	flip(srcImage, dstImage1, -1);//調用flip,參數形式見下
	//flip(srcImage, dstImage1, 0);
	//flip(srcImage, dstImage1, 1);
	imshow("效果圖", dstImage1);
	waitKey(0);
	return 0;
}

效果圖:https://raw.githubusercontent.com/zhengmuhe/deep-learning/master/%E9%95%9C%E5%83%8F.jpg?token=AMAQWVDWNEJVIACZ6GODPC242K6LA

函數調用:

flip:flip(srcImage, dstImage1, -1);

參數形式:第一個參數表示原圖,第二個參數表示目標圖,第三個參數是旋轉類型,0表明x軸旋轉,任意正數表明y軸旋轉,任意負數表明x和y軸同時旋轉。

相關文章
相關標籤/搜索