商会信息平台网站建设方案,有口碑的南昌网站设计,se 网站优化,中国建设银行金华分行网站文章目录 图像二值化原理cv2.threshold()Qtsu二值化cv2.adaptiveThreshold 图像二值化原理
图像二值化原理是通过设定一个阈值#xff0c;将图像中的像素点的灰度值与阈值进行比较#xff0c;大于阈值的像素点设置为白色#xff0c;小于阈值的像素点设置为黑色 1。图像二值… 文章目录 图像二值化原理cv2.threshold()Qtsu二值化cv2.adaptiveThreshold 图像二值化原理
图像二值化原理是通过设定一个阈值将图像中的像素点的灰度值与阈值进行比较大于阈值的像素点设置为白色小于阈值的像素点设置为黑色 1。图像二值化是将彩色或灰度图像转换为只包含两种颜色通常是黑色和白色的二值图像的过程1。
图像二值化通常分为自适应二值化、定阈二值化、OTSU算法等。定阈二值化是用户把整幅图像上的每个像素点的灰度值设定为某一阈值当灰度值大于该阈值时其灰度值被视为1如果小于该阈值其灰度值被视为0从而实现了图像二值化2。
cv2.threshold()
cv2.threshold 是 OpenCV一个开源的计算机视觉库中的一个函数用于对图像进行阈值处理也就是将图像转换为二值图像。这个函数特别适用于那些需要明确区分前景和背景的情况例如当你想要检测图像中的某个物体时。 函数原型
cv2.threshold(src, thresh, maxval, type[, dst])参数说明
src输入图像通常是一个灰度图像。阈值处理通常在灰度图像上进行因为灰度图像只有一个通道处理起来比较简单。thresh阈值。这是一个用于分类像素值的参数。所有小于 thresh 的像素值都会被赋予一个新的值通常是 0而所有大于或等于 thresh 的像素值都会被赋予另一个值通常是 maxval。maxval当像素值超过阈值时所赋予的值。在二值化的情况下这通常是 255白色。type阈值类型决定了如何处理像素值与阈值之间的关系。OpenCV 提供了多种阈值类型如 cv2.THRESH_BINARY二值化阈值化。所有大于 thresh 的像素值设为 maxval小于等于 thresh 的像素值设为 0。cv2.THRESH_BINARY_INV反二值化阈值化。所有大于 thresh 的像素值设为 0小于等于 thresh 的像素值设为 maxval。cv2.THRESH_TRUNC截断阈值化。所有大于 thresh 的像素值设为 thresh小于等于 thresh 的像素值不变。cv2.THRESH_TOZERO阈值化为 0。所有大于 thresh 的像素值不变小于等于 thresh 的像素值设为 0。cv2.THRESH_TOZERO_INV反阈值化为 0。所有大于 thresh 的像素值设为 0小于等于 thresh 的像素值不变。 dst输出图像是一个可选参数。如果提供了这个参数函数会将结果存储在这个图像中而不是创建一个新的图像。
使用示例
import cv2# 读取图像并转换为灰度图像
image cv2.imread(path_to_your_image.jpg, cv2.IMREAD_GRAYSCALE)# 应用阈值处理
ret, thresholded_image cv2.threshold(image, 127, 255, cv2.THRESH_BINARY)# 显示原始图像和阈值化后的图像
cv2.imshow(Original Image, image)
cv2.imshow(Thresholded Image, thresholded_image)# 等待按键并关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()在这个示例中我们读取了一个图像将其转换为灰度图像然后应用了二值化阈值处理。ret 变量存储了使用的阈值而 thresholded_image 是阈值处理后的图像。最后我们显示了原始图像和阈值化后的图像。
Qtsu二值化
在OpenCV中cv2.threshold 函数用于对图像进行阈值处理。当您使用 cv2.THRESH_BINARY 与 cv2.THRESH_OTSU 结合时使用位运算符 | 来组合它们这意味着您想使用大津算法Otsu’s method来自动计算一个最优阈值并将图像二值化。 使用 | 符号来组合 cv2.THRESH_BINARY 和 cv2.THRESH_OTSU 意味着您希望同时应用这两种操作二值化图像并使用Otsu’s 方法计算阈值。
下面是一个Python代码示例展示了如何使用 cv2.threshold 函数和Otsu’s 方法
import cv2# 读取图像并转换为灰度图像
gray_img cv2.imread(path_to_your_image.jpg, cv2.IMREAD_GRAYSCALE)# 使用Otsus 方法计算阈值并进行二值化
ret, thresh_img cv2.threshold(gray_img, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)# ret变量现在包含由Otsus 方法计算出的最优阈值
# thresh_img是应用了这个阈值后的二值化图像# 显示原始图像和二值化后的图像
cv2.imshow(Original Image, gray_img)
cv2.imshow(Thresholded Image, thresh_img)# 等待按键并关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()在这个例子中ret 变量将包含由Otsu’s 方法计算出的最优阈值而 thresh_img 是应用了这个阈值后的二值化图像。这种方法在处理光照不均或具有不同对比度的图像时特别有用因为它可以自动适应图像内容来确定最佳阈值。
cv2.adaptiveThreshold
cv2.adaptiveThreshold 是 OpenCV 中的一个图像处理函数用于对灰度图像进行自适应阈值处理。与全局阈值处理不同自适应阈值处理根据图像的局部区域来确定阈值因此可以有效地处理光照不均匀的图像1。
以下是 cv2.adaptiveThreshold 的详细用法和参数说明 函数原型
cv2.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C)参数说明
src输入图像应为灰度图像。maxValue当像素值超过或小于取决于阈值类型计算出的阈值时所赋予的值。通常设置为 255表示白色。adaptiveMethod自适应方法决定如何计算阈值。常用的有 cv2.ADAPTIVE_THRESH_MEAN_C邻域内像素的平均值和 cv2.ADAPTIVE_THRESH_GAUSSIAN_C邻域内像素的高斯加权和。thresholdType阈值类型决定如何应用阈值。常用的有 cv2.THRESH_BINARY二值化和 cv2.THRESH_BINARY_INV反二值化。blockSize计算阈值时要考虑的邻域大小像素数量。这个值必须是奇数。C从计算出的阈值中减去的常数。
使用示例
import cv2# 读取图像并转换为灰度图像
gray_img cv2.imread(path_to_your_image.jpg, cv2.IMREAD_GRAYSCALE)# 使用自适应阈值处理
thresh_img cv2.adaptiveThreshold(gray_img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11, 2)# 显示原始图像和处理后的图像
cv2.imshow(Original Image, gray_img)
cv2.imshow(Adaptive Threshold Image, thresh_img)# 等待按键并关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()在这个示例中blockSize 设置为 11一个奇数C 设置为 2。你可以根据图像的特点调整这些参数以获得最佳效果。