floodfill

反向投影图

只谈情不闲聊 提交于 2020-03-02 03:24:39
本次要讲的范例是反向投影,反向投影如果是按照字面上的理解,还有书本上的理解可能会比较困难,但是如果是举一些具体的简单的例子,那可能就比较容易接受了,应用的话,可以检测出肤色区域,例如,你有一个肤色直方图 ( Hue-Saturation 直方图 ),你可以用它来寻找图像中的肤色区域,现在我们来看看反向变换吧。 1、原理 图像的反向投影图是用输入图像的某一位置上像素值(多维或灰度)对应在直方图的一个bin上的值来代替该像素值,所以得到的反向投影图是单通的。 举个小例 (1)例如灰度图像如下 Image= 0 1 2 3 4 5 6 7 8 9 10 11 8 9 14 15 (2)该灰度图的直方图为(bin指定的区间为[0,3),[4,7),[8,11),[12,16)) Histogram= 4 4 6 2 (3)反向投影图 Back_Projection= 4 4 4 4 4 4 4 4 6 6 6 6 6 6 2 2 例如位置(0,0)上的像素值为0,对应的bin为[0,3),所以反向直方图在该位置上的值这个bin的值4。 这个操作与前面介绍的LUT()方法非常类似,只不过是将LUT()参数中的查找表改成直方图而已。 2、代码实现 ①、代码运用了floodfull()函数,点击图片的位置,得到填充的联通图,赋值给mask,计算mask所对应图片部位的直方图,再对图片进行反向投影

泛洪填充floodfill()

北城以北 提交于 2020-02-10 19:53:01
#泛洪填充 import cv2 as cv import numpy as np def fillblooding_demo(image): h, w = image.shape[:2] image_copy = image.copy() mask = np.zeros(shape=(h+2, w+2), dtype=np.uint8) cv.floodFill(image,mask,(107, 314), (0, 0, 255), (50, 50, 50), (50, 50, 50), cv.FLOODFILL_FIXED_RANGE) cv.imshow("src", image) cv.imshow("dst", image_copy) cv.waitKey(0) image = cv.imread("d:/a.jfif") fillblooding_demo(image) 在floodfill函数中,第二参数是掩膜,掩膜为1的区域被遮盖住了,不能用于泛洪。第二个参数是起始坐标,注意先列后行。第三个坐标是目标颜色,第四个坐标是泛洪的下界,第五个坐标是泛洪的上界(就是能够比第二个参数的像素值大多少),第六个参数是固定的。 来源: https://www.cnblogs.com/loubin/p/12292189.html

floodfill问题——岛屿的最大面积

南楼画角 提交于 2020-01-26 03:51:12
文章目录 floodfill问题——岛屿的最大面积 问题描述 思路 代码 扩展 floodfill问题——岛屿的最大面积 问题描述 题目来自Leetcode695题 给定一个包含了一些 0 和 1的非空二维数组 grid , 一个 岛屿 是由四个方向 (水平或垂直) 的 1 (代表土地) 构成的组合。你可以假设二维矩阵的四个边缘都被水包围着。 找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为0。) 示例 1: [[0,0,1,0,0,0,0,1,0,0,0,0,0], [0,0,0,0,0,0,0,1,1,1,0,0,0], [0,1,1,0,1,0,0,0,0,0,0,0,0], [0,1,0,0,1,1,0,0,1,0,1,0,0], [0,1,0,0,1,1,0,0,1,1,1,0,0], [0,0,0,0,0,0,0,0,0,0,1,0,0], [0,0,0,0,0,0,0,1,1,1,0,0,0], [0,0,0,0,0,0,0,1,1,0,0,0,0]] 对于上面这个给定矩阵应返回 6。注意答案不应该是11,因为岛屿只能包含水平或垂直的四个方向的‘1’。 示例 2: [[0,0,0,0,0,0,0,0]] 对于上面这个给定的矩阵, 返回 0。 注意: 给定的矩阵grid 的长度和宽度都不超过 50。 思路 对于这类问题,都是基于以下思路,遍历二维数组