Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 锐化图像中每个对象的边界像素_Python_Opencv_Image Processing_Computer Vision - Fatal编程技术网

Python 锐化图像中每个对象的边界像素

Python 锐化图像中每个对象的边界像素,python,opencv,image-processing,computer-vision,Python,Opencv,Image Processing,Computer Vision,我有一张带有随机成分的图像。。。每个组件的边框都有一些模糊的像素,即…参见屏幕截图 所以,使用OpenCv和python,我希望这个图像非常清晰…也就是说。边缘上没有模糊的像素。。。如下图所示 这是供您参考的完整图像。。。。。 在一定的误差容限下,这种行为可以通过使用k-均值算法来实现。该算法可用于构建具有相似颜色的像素簇。该实现提供了许多参数来调整以获得所需的结果。您可以使用以下代码段开始: import cv2 import numpy as np img = cv2.imread(&

我有一张带有随机成分的图像。。。每个组件的边框都有一些模糊的像素,即…参见屏幕截图

所以,使用OpenCv和python,我希望这个图像非常清晰…也就是说。边缘上没有模糊的像素。。。如下图所示

这是供您参考的完整图像。。。。。
在一定的误差容限下,这种行为可以通过使用k-均值算法来实现。该算法可用于构建具有相似颜色的像素簇。该实现提供了许多参数来调整以获得所需的结果。您可以使用以下代码段开始:

import cv2
import numpy as np

img = cv2.imread("/path/to/img.png")
Z = img.reshape((-1, 3))
Z = np.float32(Z)
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 10, 1.0)
K = 2
ret, label, center = cv2.kmeans(Z, K, None, criteria, 10, cv2.KMEANS_RANDOM_CENTERS)

center = np.uint8(center)
res = center[label.flatten()]
res2 = res.reshape((img.shape))

cv2.imwrite("./output.png", res2)
上述代码将为示例图像生成以下结果:


但这段代码可能不会很好地处理较大的图像(即使在通过K=5之后),这是因为,我们依靠K均值通过随机抽样来拾取种子。我们可以选择传递种子颜色,以查找代码中黄色、浅绿色、深绿色、棕色和蓝色的BGR值。在提供这些BGR值作为种子后,您可以获得更好的结果。

我是否可以假设输入图像仅由5种主要颜色组成:黄色、棕色、浅绿色、深绿色和蓝色?或者可能有任意组成颜色的组合?