我怎样才能得到下图的黑白图像?
how can i get a black and white image for the following picture?
我想把图片准确地转换成黑白图像,其中种子用白色表示,背景用黑色表示。我想把它放在 python opencv 代码中。请帮帮我
我使用下面给定的代码得到了上图的好结果。现在我有了另一张阈值似乎不起作用的图片。我该如何解决这个问题。我得到的输出如下图
另外,种子上有一些凹痕,程序将其作为种子的边界,这不是下图所示的好结果。我怎样才能让程序忽略凹痕。在这种情况下,掩盖种子是一个不错的选择吗?
我将图像从 BGR 颜色 space 转换为 HSV 颜色 space。
然后我提取了 hue 通道:
然后我对其进行了阈值处理:
注:
每当您在某些领域遇到困难时,请尝试使用不同的颜色 space,HSV 颜色 space 最为突出。
更新:
代码如下:
import cv2
import numpy as np
filename = 'seed.jpg'
img = cv2.imread(filename) #---Reading image file---
hsv_img = cv2.cvtColor(img,cv2.COLOR_BGR2HSV) #---Converting RGB image to HSV
hue, saturation, value, = cv2.split(hsv_img) #---Splitting HSV image to 3 channels---
blur = cv2.GaussianBlur(hue,(3,3),0) #---Blur to smooth the edges---
ret,th = cv2.threshold(blur, 38, 255, 0) #---Binary threshold---
cv2.imshow('th.jpg',th)
现在您还可以执行轮廓操作来突出显示您感兴趣的区域。试试看!! :)
另一项更新:
我发现等高线高于某个约束得到这个:
图像分割的方法有无数种。
最简单的就是全局阈值操作。如果您想了解更多其他方法,您应该阅读一些书籍。无论如何,在您进行任何进一步的图像处理之前,我都建议您这样做。不懂最基本的工具就开始做图片处理意义不大
只是为了向您展示这是如何实现的:
我将图像从 RGB 转换为 HSB。然后,我将单独的全局阈值应用于色调和亮度通道,以获得两张图像的最佳分割结果。
然后使用逐像素 AND 运算组合两个二值图像。我这样做是因为两个通道都给出了次优结果,但它们的重叠非常好。
我还应用了一些形态学运算符来清理结果。
当然你可以只反转图像以获得所需的黑色背景...
阈值和使用的通道当然取决于您拥有的图像和您想要实现的目标。这是一个非常具体案例的过程,可以动态适应有限的范围。
这之后可以加上标签或您需要的任何东西:
我想把图片准确地转换成黑白图像,其中种子用白色表示,背景用黑色表示。我想把它放在 python opencv 代码中。请帮帮我
我使用下面给定的代码得到了上图的好结果。现在我有了另一张阈值似乎不起作用的图片。我该如何解决这个问题。我得到的输出如下图
另外,种子上有一些凹痕,程序将其作为种子的边界,这不是下图所示的好结果。我怎样才能让程序忽略凹痕。在这种情况下,掩盖种子是一个不错的选择吗?
我将图像从 BGR 颜色 space 转换为 HSV 颜色 space。
然后我提取了 hue 通道:
然后我对其进行了阈值处理:
注:
每当您在某些领域遇到困难时,请尝试使用不同的颜色 space,HSV 颜色 space 最为突出。
更新:
代码如下:
import cv2
import numpy as np
filename = 'seed.jpg'
img = cv2.imread(filename) #---Reading image file---
hsv_img = cv2.cvtColor(img,cv2.COLOR_BGR2HSV) #---Converting RGB image to HSV
hue, saturation, value, = cv2.split(hsv_img) #---Splitting HSV image to 3 channels---
blur = cv2.GaussianBlur(hue,(3,3),0) #---Blur to smooth the edges---
ret,th = cv2.threshold(blur, 38, 255, 0) #---Binary threshold---
cv2.imshow('th.jpg',th)
现在您还可以执行轮廓操作来突出显示您感兴趣的区域。试试看!! :)
另一项更新:
我发现等高线高于某个约束得到这个:
图像分割的方法有无数种。
最简单的就是全局阈值操作。如果您想了解更多其他方法,您应该阅读一些书籍。无论如何,在您进行任何进一步的图像处理之前,我都建议您这样做。不懂最基本的工具就开始做图片处理意义不大
只是为了向您展示这是如何实现的:
我将图像从 RGB 转换为 HSB。然后,我将单独的全局阈值应用于色调和亮度通道,以获得两张图像的最佳分割结果。 然后使用逐像素 AND 运算组合两个二值图像。我这样做是因为两个通道都给出了次优结果,但它们的重叠非常好。 我还应用了一些形态学运算符来清理结果。 当然你可以只反转图像以获得所需的黑色背景...
阈值和使用的通道当然取决于您拥有的图像和您想要实现的目标。这是一个非常具体案例的过程,可以动态适应有限的范围。
这之后可以加上标签或您需要的任何东西: