Opencv 之阈值处理操作

tech2026-03-11  1

图像的二值化:将图像上的像素点的灰度值设置为0或255,这样将使整个图像呈现出明显的黑白效果。在数字图像处理中,二值图像占有非常重要的地位,图像的二值化使图像中数据量大为减少,从而能凸显出目标的轮廓。

API函数 CV_EXPORTS_W double threshold( InputArray src, OutputArray dst, double thresh, double maxval, int type ); 含义: src:源图像,可以为8位的灰度图,也可以为32位的彩色图像。(一般取灰度图处理) dst:输出图像 thresh:阈值 maxval:dst图像中最大值 type:阈值类型,

源程序 #include “stdafx.h”

//本节讲述 图像处理之 图像金字塔-上采样和下采样; #include <opencv2/opencv.hpp> #include #include <math.h>

using namespace std; using namespace cv;

Mat src, dst, asd,gray_src; int threshold_value = 127; int threshold_max = 255; int type_value = 2; int type_max = 4; //通过滑动切换阈值类型,5种

//const char* void shreshold_demo(int,void*); const char*output_title = “阈值操作”;

int main(int argc, char**argv) { src = imread(“C:/Users/Rubison.DELL/Desktop\杂物/壁纸/小白2.jpg”); //存放自己图像的路径 if (!src.data) { printf(“could not load image…\r\n”); return -1; }

char input_title[] = "原图"; namedWindow(input_title, CV_WINDOW_AUTOSIZE); namedWindow(output_title, CV_WINDOW_AUTOSIZE); imshow(input_title,src); createTrackbar("Threshold value", output_title, &threshold_value, threshold_max, shreshold_demo); createTrackbar("type value", output_title, &type_value, type_max, shreshold_demo); shreshold_demo(0,0); waitKey(0); destroyAllWindows(); return 0;

}

void shreshold_demo(int, void*) { cvtColor(src, gray_src, CV_BGR2GRAY); threshold(gray_src, dst, threshold_value, threshold_max, type_value); //注意 !这里type_value本应该是阈值类型, imshow(output_title, dst); //由于它的类型对应0到4,既被赋值,可以通过改变变量type_value的值从而改变阈值类型

}

程序验证 补充 (该部分均为转载,出处位于首段) 自适应阈值化(THRESH_OTSU)和三角形算法(THRESH_TRIANGLE)算法

自适应阈值:转载出处 OTSU算法(大津法)是一种图像灰度自适应的阈值分割算法。大津法按照图像上灰度值的分布,将图像分成背景和前景两部分看待,前景就是我们要按照阈值分割出来的部分。背景和前景的分界值就是我们要求出的阈值。遍历不同的阈值,计算不同阈值下对应的背景和前景之间的类内方差,当类内方差取得极大值时,此时对应的阈值就是OTSU算法(大津法)所求的阈值。

Otsu实现思路

计算0~255各灰阶对应的像素个数,保存至一个数组中,该数组下标是灰度值,保存内容是当前灰度值对应像素数计算背景图像的平均灰度、背景图像像素数所占比例计算前景图像的平均灰度、前景图像像素数所占比例遍历0~255各灰阶,计算并寻找类间方差极大值

三角法图像二值化:三角法阈值分割–转载 5.阈值分固定阈值和自适应阈值(adaptiveThreshold()):上面讲述的是固定阈值,有关自适应阈值请参考:自适应阈值 备注:threshold(src, dst, 150, 255, THRESH_BINARY|THRESH_OTSU)也是自适应阈值

最新回复(0)