Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.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

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 - Fatal编程技术网

Python 如何从彩色地图中提取土地?

Python 如何从彩色地图中提取土地?,python,opencv,image-processing,Python,Opencv,Image Processing,从这张游戏地图中提取土地时遇到了麻烦 答案实际上是8张图片,代表这个大陆的国家。这个地图(大陆)实际上是一个更大的游戏地图的一部分,我已经把它分解成了几个图像。它们每一个都代表着一个不同颜色的大陆 我尝试了HSV分割、阈值和分水岭算法,但效果并不理想。图像仍然嘈杂,陆地区域被切断 有人能提出其他的方法吗?谢谢。这个问题很有挑战性。我提出了一种简单的方法,但它只提供了一个粗略的近似值 将rgb图像转换为灰度 应用阈值获得黑白图像 填充孔(无法从外部到达的背景像素) 标记区域并过滤区域低于阈值的区

从这张游戏地图中提取土地时遇到了麻烦


答案实际上是8张图片,代表这个大陆的国家。这个地图(大陆)实际上是一个更大的游戏地图的一部分,我已经把它分解成了几个图像。它们每一个都代表着一个不同颜色的大陆

我尝试了HSV分割、阈值和分水岭算法,但效果并不理想。图像仍然嘈杂,陆地区域被切断


有人能提出其他的方法吗?谢谢。

这个问题很有挑战性。我提出了一种简单的方法,但它只提供了一个粗略的近似值

  • 将rgb图像转换为灰度
  • 应用阈值获得黑白图像
  • 填充孔(无法从外部到达的背景像素)
  • 标记区域并过滤区域低于阈值的区域
  • 在Matlab中实现了这一点

    im = imread('FyrNE.jpg');
    I = rgb2gray(im);
    [L, n] = bwlabel(bwareafilt(I>160,[1e2,Inf]));
    imagesc(imfill(L, 'holes'))
    
    这是12个检测到的国家的结果,这仍然是次优的


    您真正想做的是,要么使用更奇特的算法检测特定长度的平滑曲线(边界曲线),要么,如果不需要重复执行任务,则使用可分辨颜色(例如红色)手动重新绘制边界,然后从那里开始。

    而不是分割黄色,你应该试着分割黑色和反转面具。这并不简单。如果你不需要在数百张图片上做这件事,我会考虑重新绘制一些图像上的边界(例如红色),这些颜色还不存在于图像上,并从那里起作用。你基本上需要区分的是地图上的边界线和其他装饰。然而,这是一个非常好的问题。谢谢你发帖。答案是什么?这是一个所有黑色现在都是透明的图像吗?或者是12张图片,每张图片中有一个国家?还有别的吗?答案实际上是8张图片,代表这个大陆的国家。这个地图(大陆)实际上是一个更大的游戏地图的一部分,我已经把它分解成了几个图像。它们每一个都代表着一个不同颜色的大陆。“我尝试了HSV分割、阈值和分水岭算法,但都没有达到最佳效果。”与其说你做了什么,不如展示你做了什么。也就是说,发布您的代码。展示为什么它不做你想让它做的事。如果你这样做,你会得到更多有用的答案。看见