blur & threshold
This commit is contained in:
14
Blur/bilateral.cpp
Normal file
14
Blur/bilateral.cpp
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
#include <opencv2/opencv.hpp>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
cv::Mat src = cv::imread("image.jpg");
|
||||||
|
cv::Mat dst;
|
||||||
|
|
||||||
|
// 参数:输入, 输出, 邻域直径, 颜色空间标准差, 坐标空间标准差
|
||||||
|
// 颜色标准差越大,表示越宽的颜色范围会被混合
|
||||||
|
cv::bilateralFilter(src, dst, 9, 75, 75);
|
||||||
|
|
||||||
|
cv::imshow("Bilateral Filter", dst);
|
||||||
|
cv::waitKey(0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
13
Blur/blur.cpp
Normal file
13
Blur/blur.cpp
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
#include <opencv2/opencv.hpp>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
cv::Mat src = cv::imread("../img/2.jpg");
|
||||||
|
cv::Mat dst;
|
||||||
|
|
||||||
|
// 参数:输入, 输出, 卷积核大小 Size(w, h)
|
||||||
|
cv::blur(src, dst, cv::Size(5, 5));
|
||||||
|
|
||||||
|
cv::imshow("Mean Blur", dst);
|
||||||
|
cv::waitKey(0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
14
Blur/gauss.cpp
Normal file
14
Blur/gauss.cpp
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
#include <opencv2/opencv.hpp>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
cv::Mat src = cv::imread("image.jpg");
|
||||||
|
cv::Mat dst;
|
||||||
|
|
||||||
|
// 参数:输入, 输出, 核大小, sigmaX(标准差), sigmaY
|
||||||
|
// 如果 sigmaY 为 0,则默认与 sigmaX 相等
|
||||||
|
cv::GaussianBlur(src, dst, cv::Size(5, 5), 0);
|
||||||
|
|
||||||
|
cv::imshow("Gaussian Blur", dst);
|
||||||
|
cv::waitKey(0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
13
Blur/median.cpp
Normal file
13
Blur/median.cpp
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
#include <opencv2/opencv.hpp>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
cv::Mat src = cv::imread("image.jpg");
|
||||||
|
cv::Mat dst;
|
||||||
|
|
||||||
|
// 参数:输入, 输出, 核大小(必须是大于1的奇数整数,如3, 5, 7)
|
||||||
|
cv::medianBlur(src, dst, 5);
|
||||||
|
|
||||||
|
cv::imshow("Median Blur", dst);
|
||||||
|
cv::waitKey(0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
15
Threshold/adaptive.cpp
Normal file
15
Threshold/adaptive.cpp
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
#include <opencv2/opencv.hpp>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
cv::Mat img = cv::imread("../img/2.jpg", cv::IMREAD_GRAYSCALE);
|
||||||
|
if (img.empty()) return -1;
|
||||||
|
|
||||||
|
cv::Mat dst;
|
||||||
|
// 参数依次为:输入, 输出, 最大值, 自适应方法, 阈值类型, 邻域大小(须为奇数), 常数C
|
||||||
|
cv::adaptiveThreshold(img, dst, 255, cv::ADAPTIVE_THRESH_MEAN_C,
|
||||||
|
cv::THRESH_BINARY, 11, 2);
|
||||||
|
|
||||||
|
cv::imshow("Adaptive Threshold", dst);
|
||||||
|
cv::waitKey(0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
18
Threshold/auto.cpp
Normal file
18
Threshold/auto.cpp
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
#include <opencv2/opencv.hpp>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
cv::Mat img = cv::imread("../img/2.jpg", cv::IMREAD_GRAYSCALE);
|
||||||
|
if (img.empty()) return -1;
|
||||||
|
|
||||||
|
cv::Mat dst;
|
||||||
|
// 注意:使用 THRESH_OTSU 时,输入的 thresh 参数 (0) 会被忽略
|
||||||
|
// 它是通过 “标志位组合” 来实现的:cv::THRESH_BINARY | cv::THRESH_OTSU
|
||||||
|
double otsuThresh = cv::threshold(img, dst, 0, 255, cv::THRESH_BINARY | cv::THRESH_OTSU);
|
||||||
|
|
||||||
|
std::cout << "Otsu 自动确定的阈值是: " << otsuThresh << std::endl;
|
||||||
|
|
||||||
|
cv::imshow("Otsu Threshold", dst);
|
||||||
|
cv::waitKey(0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
20
Threshold/simple.cpp
Normal file
20
Threshold/simple.cpp
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#include <opencv2/opencv.hpp>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
// 读取灰度图
|
||||||
|
cv::Mat img = cv::imread("../img/2.jpg", cv::IMREAD_GRAYSCALE);
|
||||||
|
if (img.empty()) return -1;
|
||||||
|
|
||||||
|
cv::Mat dst;
|
||||||
|
double thresh = 127;
|
||||||
|
double maxVal = 255;
|
||||||
|
|
||||||
|
// 简单阈值处理:二进制阈值
|
||||||
|
// 返回值是处理时使用的阈值
|
||||||
|
double ret = cv::threshold(img, dst, thresh, maxVal, cv::THRESH_BINARY);
|
||||||
|
|
||||||
|
cv::imshow("Simple Threshold", dst);
|
||||||
|
cv::waitKey(0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user