【C++OpenCV】閾値二値化、閾値逆二値化、カットオフ、閾値ゼロ取り、閾値ゼロ取り
1.画像閾値タイプ(threshold)
簡単に言えば、閾値は画像分割のルーラーであり、このルーラーはアルゴリズムによって閾値タイプである閾値二値化(THERSH_BINARY)がある値を閾値とし、大きい値を最大値とし、小さい値を0閾値タイプとする閾値逆二値化(THRESH_BINARY_INV)がある値を閾値とし、打つ値より0とする.閾値より小さい値を最大値閾値タイプとする、カットオフ(THRESH_TRUNC)ある値を閾値とし、閾値より大きい値を閾値サイズとし、閾値より小さい値を不変閾値タイプとする、閾値ゼロ(THRESH_TOZERO)ある値を閾値とし、閾値より大きい値を不変とする、閾値より小さい値はいずれも0閾値タイプに設定――閾値逆取ゼロ(THRESH_TOZERO_INV)ある値を閾値とし、閾値より大きい値を0とし、閾値より小さい値は変わらない
Opencvは、閾値THRESH_を自動的に検索する2つの方法を提供する.OTSU THRESH_TRIANGLE
2.しきい値API
コードデモ
簡単に言えば、閾値は画像分割のルーラーであり、このルーラーはアルゴリズムによって閾値タイプである閾値二値化(THERSH_BINARY)がある値を閾値とし、大きい値を最大値とし、小さい値を0閾値タイプとする閾値逆二値化(THRESH_BINARY_INV)がある値を閾値とし、打つ値より0とする.閾値より小さい値を最大値閾値タイプとする、カットオフ(THRESH_TRUNC)ある値を閾値とし、閾値より大きい値を閾値サイズとし、閾値より小さい値を不変閾値タイプとする、閾値ゼロ(THRESH_TOZERO)ある値を閾値とし、閾値より大きい値を不変とする、閾値より小さい値はいずれも0閾値タイプに設定――閾値逆取ゼロ(THRESH_TOZERO_INV)ある値を閾値とし、閾値より大きい値を0とし、閾値より小さい値は変わらない
Opencvは、閾値THRESH_を自動的に検索する2つの方法を提供する.OTSU THRESH_TRIANGLE
2.しきい値API
threshold(
cv::InputArray src, //
cv::OutputArray dst, //
double thresh, //
double maxValue, //
int thresholdType //
);
コードデモ
#include
#include
#include
using namespace cv;
using namespace std;
Mat src, dst,gray;
int threshold_value = 127; //
int threshold_max = 255; //
int type_value = 2;
int type_max = 4;
const char* output_title = "binary image";
void Threshold_Demo(int,void*) {
// 8
cvtColor(src, gray, COLOR_BGR2GRAY);
//threshold(gray, dst, threshold_value, threshold_max, THRESH_BINARY); //
threshold(gray,dst,threshold_value, threshold_max, type_value); //
imshow(output_title,dst);
}
int main(int argc, char** argv) {
src = imread("D:/image/img1.jpg");
if (src.empty()) {
printf("could not load image...
");
return -1;
}
namedWindow("src" , WINDOW_AUTOSIZE);
namedWindow(output_title,WINDOW_AUTOSIZE);
imshow("src", src);
createTrackbar("Threshold Value",output_title,&threshold_value,threshold_max,Threshold_Demo);
createTrackbar("Type Value", output_title, &type_value, type_max, Threshold_Demo);
Threshold_Demo(0,0);
waitKey(0);
return 0;
}