【发布时间】:2011-06-01 19:50:46
【问题描述】:
我正在构建一个使用来自网络服务的图像的应用程序。不幸的是,图像是用白色填充的(当服务调整它们的大小时,很久以前)。
我想创建一个类来检测图像是否具有相同白色细微差别的完整线条(水平或垂直),然后裁剪图像。 (或删除白色区域)
所以基本上我在想: - 穿过水平线(全宽和 1 px 高)并检查它是否具有相同的白色细微差别。
(为了稍后优化,我可以通过检测第一个像素和最后一个像素来检测颜色,如果它们匹配,则检查一半等) - 在初稿中并不重要。
关于填充,我不能确定填充的大小。这些图像有各种尺寸和比例,并被填充为相同的尺寸。所以填充的边框会随着图像的变化而变化。
编辑: 这是一个:http://i.dbastatic.dk/images/3/37//74438337_30052011063215_9539_3.jpg 和一个垂直的:http://i.dbastatic.dk/images/3/40//74273140_23052011090107_0806_3.jpg 和一个棘手的:http://i.dbastatic.dk/images/3/61/500396561_27052011171605_5877_3.jpg 请注意,最后一个有部分白色背景,为什么我需要检测白色像素是否遍布图像宽度。
您能否给我一个代码示例以开始使用。我认为最难的部分是逐像素运行图像并检测颜色。
也许 C++ 会更快?
我会 C++ 和 Objective-C,所以请给我最好的机会 :-)
【问题讨论】:
-
图片的变化有多大?您是否正在处理具有相同 RGB 白色值且没有任何歪斜的固定线的图像?
-
它填充了相同的白色 (ffffff og RGB:255,255,255),但 jpeg 压缩了,因此由于压缩,可能会有一些细微的细微差别。
-
只是出于好奇,您是否设法解决了这个问题?
标签: c++ objective-c image-processing