9 个解决方案
#1
先把图像二值化,然后做一个连通域分析,把太大或者太小的连通域滤掉,找到这4个圆圈,这4个连通域中点数最多的那个就是你涂黑的那个
#2
非常感谢,二值化,是不是可以把图像转换为一个由0和1组成的二位数组呢?我要找到这个涂黑的圆圈,是不是意味着我要找1最紧密的地方呢?另外,请教一个问题:如果一张图片是400*600的,那么二值化后的二维数组是不是就是400*600呢?谢谢~~
#3
我要找到这个涂黑的圆圈,是不是意味着我要找1最紧密的地方呢?
答:统计一下一个连通区域像素值为1的个数再进行比较,就可以判断了!
如果一张图片是400*600的,那么二值化后的二维数组是不是就是400*600呢?
答:看你的图片原来一个像素是由多少位来组成的,如果是8位,那么就是400*600个字节,如果是2位,就是400*600*2/8个字节,如果是24位就是400*600*24/8个字节的大小,相应的就要在程序中分配相应的内存空间存放像素数据
答:统计一下一个连通区域像素值为1的个数再进行比较,就可以判断了!
如果一张图片是400*600的,那么二值化后的二维数组是不是就是400*600呢?
答:看你的图片原来一个像素是由多少位来组成的,如果是8位,那么就是400*600个字节,如果是2位,就是400*600*2/8个字节,如果是24位就是400*600*24/8个字节的大小,相应的就要在程序中分配相应的内存空间存放像素数据
#4
是不是意味着我要找1最紧密的地方呢?
-------------------------------
是这个思路,不过一般1是白,0才是黑
如果一张图片是400*600的,那么二值化后的二维数组是不是就是400*600呢?
--------------------------------------------------------------
是的,用bool类型
-------------------------------
是这个思路,不过一般1是白,0才是黑
如果一张图片是400*600的,那么二值化后的二维数组是不是就是400*600呢?
--------------------------------------------------------------
是的,用bool类型
#5
这个问题在matlab下是很轻松实现的,在c下,麻烦一下 ,但思路是一样的。
#6
建议你看看《vc++数字图像处理》这本书
#7
二值话后,设置灰度阈值,只选出黑的部分,联通域分析,点密集的地方就是了。
#8
如果知道圆圈在哪里画的,就直接规定几个区域,然后对图像进行扫描,针对区块扫描,黑的最多的区块,和你指定的区块对比一下就知道哪个被涂黑了
#9
简单的黑白图像的直接遍历所有像素,然后做四邻域联通检测
#1
先把图像二值化,然后做一个连通域分析,把太大或者太小的连通域滤掉,找到这4个圆圈,这4个连通域中点数最多的那个就是你涂黑的那个
#2
非常感谢,二值化,是不是可以把图像转换为一个由0和1组成的二位数组呢?我要找到这个涂黑的圆圈,是不是意味着我要找1最紧密的地方呢?另外,请教一个问题:如果一张图片是400*600的,那么二值化后的二维数组是不是就是400*600呢?谢谢~~
#3
我要找到这个涂黑的圆圈,是不是意味着我要找1最紧密的地方呢?
答:统计一下一个连通区域像素值为1的个数再进行比较,就可以判断了!
如果一张图片是400*600的,那么二值化后的二维数组是不是就是400*600呢?
答:看你的图片原来一个像素是由多少位来组成的,如果是8位,那么就是400*600个字节,如果是2位,就是400*600*2/8个字节,如果是24位就是400*600*24/8个字节的大小,相应的就要在程序中分配相应的内存空间存放像素数据
答:统计一下一个连通区域像素值为1的个数再进行比较,就可以判断了!
如果一张图片是400*600的,那么二值化后的二维数组是不是就是400*600呢?
答:看你的图片原来一个像素是由多少位来组成的,如果是8位,那么就是400*600个字节,如果是2位,就是400*600*2/8个字节,如果是24位就是400*600*24/8个字节的大小,相应的就要在程序中分配相应的内存空间存放像素数据
#4
是不是意味着我要找1最紧密的地方呢?
-------------------------------
是这个思路,不过一般1是白,0才是黑
如果一张图片是400*600的,那么二值化后的二维数组是不是就是400*600呢?
--------------------------------------------------------------
是的,用bool类型
-------------------------------
是这个思路,不过一般1是白,0才是黑
如果一张图片是400*600的,那么二值化后的二维数组是不是就是400*600呢?
--------------------------------------------------------------
是的,用bool类型
#5
这个问题在matlab下是很轻松实现的,在c下,麻烦一下 ,但思路是一样的。
#6
建议你看看《vc++数字图像处理》这本书
#7
二值话后,设置灰度阈值,只选出黑的部分,联通域分析,点密集的地方就是了。
#8
如果知道圆圈在哪里画的,就直接规定几个区域,然后对图像进行扫描,针对区块扫描,黑的最多的区块,和你指定的区块对比一下就知道哪个被涂黑了
#9
简单的黑白图像的直接遍历所有像素,然后做四邻域联通检测