目录
一、改变颜色
cvtColor(InputArray src,outputArray dst,int code)
第一个参数为输入图像;
第二个参数为输出图像;
第三个参数为颜色空间转换的标识符(具体见表);
例:图像转换为灰度图
int main() {
string path = "C:\\Users\\Rong\\Desktop\\Resources\\test.png";
Mat Img = imread(path);
Mat ImgGray;
cvtColor(Img, ImgGray, COLOR_BGR2GRAY);
imshow("Image", Img);
imshow("Image Gray", ImgGray);
waitKey(0);
return 0;
}
二、高斯模糊
API说明:
参数解释:
. InputArray src: 输入图像,可以是Mat类型,图像深度为CV_8U、CV_16U、CV_16S、 CV_32F、CV_64F。
. OutputArray dst: 输出图像,与输入图像有相同的类型和尺寸。
. Size ksize: 高斯内核大小,这个尺寸与前面两个滤波kernel尺寸不同,ksize.width 和 ksize.height可以不相同但是这两个值必须为正奇数,如果这两个值为 0,他们的值将由sigma计算。
. double sigmaX: 高斯核函数在X方向上的标准偏差
. double sigmaY: 高斯核函数在Y方向上的标准偏差,如果sigmaY是0,则函数会自动将 sigmaY的值设置为与sigmaX相同的值,如果sigmaX和sigmaY都是0, 这两个值将由ksize.width和ksize.height计算而来。具体可以参考 getGaussianKernel()函数查看具体细节。建议将size、sigmaX和sigmaY 都指定出来。
. int borderType=BORDER_DEFAULT: 推断图像外部像素的某种便捷模式,有默认值 BORDER_DEFAULT,如果没有特殊需要不用更 改,具体可以参考borderInterpolate()函数。
int main() {
string path = "C:\\Users\\Rong\\Desktop\\Resources\\test.png";
Mat Img = imread(path);
Mat ImgGray,ImgBlur;
cvtColor(Img, ImgGray, COLOR_BGR2GRAY);
GaussianBlur(ImgGray, ImgBlur, Size(11, 11), 3, 3);
imshow("Image", Img);
imshow("Image Gray", ImgGray);
imshow("Image Blur", ImgBlur);
waitKey(0);
return 0;
}
三、边缘测试
void Canny( InputArray image,
OutputArray edges,
double threshold1,
double threshold2,
int apertureSize = 3,
bool L2gradient = false);
int main() {
string path = "C:\\Users\\Rong\\Desktop\\Resources\\test.png";
Mat Img = imread(path);
Mat ImgGray,ImgBlur,ImgCanny,ImgDil,ImgErode;
cvtColor(Img, ImgGray, COLOR_BGR2GRAY);
GaussianBlur(ImgGray, ImgBlur, Size(11, 11), 3, 3);
Canny(ImgBlur, ImgCanny, 30, 60);
imshow("Image", Img);
imshow("Image Gray", ImgGray);
imshow("Image Blur", ImgBlur);
imshow("Image Canny", ImgCanny);
waitKey(0);
return 0;
}
四、扩张
(注:要先做一个可以用来扩张的kernel)
int main() {
string path = "C:\\Users\\Rong\\Desktop\\Resources\\test.png";
Mat Img = imread(path);
Mat ImgGray,ImgBlur,ImgCanny,ImgDil,ImgErode;
cvtColor(Img, ImgGray, COLOR_BGR2GRAY);
GaussianBlur(ImgGray, ImgBlur, Size(11, 11), 3, 3);
Canny(ImgBlur, ImgCanny, 30, 60);
Mat kernel = getStructuringElement(MORPH_RECT, Size(3, 3));
dilate(ImgCanny, ImgDil, kernel);
imshow("Image", Img);
imshow("Image Gray", ImgGray);
imshow("Image Blur", ImgBlur);
imshow("Image Canny", ImgCanny);
imshow("Image dilate", ImgDil);
waitKey(0);
return 0;
}
四、腐蚀
int main() {
string path = "C:\\Users\\Rong\\Desktop\\Resources\\test.png";
Mat Img = imread(path);
Mat ImgGray,ImgBlur,ImgCanny,ImgDil,ImgErode;
cvtColor(Img, ImgGray, COLOR_BGR2GRAY);
GaussianBlur(ImgGray, ImgBlur, Size(11, 11), 3, 3);
Canny(ImgBlur, ImgCanny, 30, 60);
Mat kernel = getStructuringElement(MORPH_RECT, Size(3, 3));
dilate(ImgCanny, ImgDil, kernel);
erode(ImgDil, ImgErode, kernel);
imshow("Image", Img);
imshow("Image Gray", ImgGray);
imshow("Image Blur", ImgBlur);
imshow("Image Canny", ImgCanny);
imshow("Image dilate", ImgDil);
imshow("Image erode", ImgErode);
waitKey(0);
return 0;
}