Tag: image processing

如何从BufferedImage获取InputStream?

我如何从BufferedImage对象获取InputStream? 我试过这个,但ImageIO.createImageInputStream()总是返回NULL BufferedImage bigImage = GraphicsUtilities.createThumbnail(ImageIO.read(file), 300); ImageInputStream bigInputStream = ImageIO.createImageInputStream(bigImage); 正在正确生成图像缩略图,因为我可以成功地将bigImage绘制到JPanel 。 谢谢。

如何从图像中裁剪最大的矩形

我有几张桌子上的图片。 我想从图像中裁剪页面。 一般来说,页面将是图像中最大的矩形,但是矩形的所有四边在某些情况下可能不可见。 我正在做以下但没有得到所需的结果: import cv2 import numpy as np im = cv2.imread('images/img5.jpg') gray=cv2.cvtColor(im,cv2.COLOR_BGR2GRAY) ret,thresh = cv2.threshold(gray,127,255,0) _,contours,_ = cv2.findContours(thresh,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE) areas = [cv2.contourArea(c) for c in contours] max_index = np.argmax(areas) cnt=contours[max_index] x,y,w,h = cv2.boundingRect(cnt) cv2.rectangle(im,(x,y),(x+w,y+h),(0,255,0),2) cv2.imshow("Show",im) cv2.imwrite("images/img5_rect.jpg", im) cv2.waitKey(0) 以下是一些例子: 第一个例子 :我可以在这个图像中find矩形,但是,如果剩余的部分也可以被裁剪出来。 第二个例子 :在这个图像中找不到矩形的正确尺寸。 第三个示例 :无法在此图像中find正确的尺寸。 第四例 :与此相同。

透视变形矩形的比例

给定一个矩形扭曲的二维图片: 我知道这个形状最初是一个矩形,但我不知道它的原始大小。 如果我知道这幅图中angular点的像素坐标,我怎样才能计算出原来的比例,即矩形的商(宽度/高度)? (背景:目标是自动不失真矩形文件的照片,边缘检测可能会做hough变换) 更新: 有一些讨论是否可以根据给出的信息来确定宽高比。 我的天真的想法是,这一定是可能的,因为我想不出一个1:4矩形投影到上面描述的四边形的方法。 这个比例显然接近1:1,所以应该有一种方法来确定它的math。 然而我没有证据certificate这超出了我的直觉猜测。 我还没有完全理解下面提出的论点,但是我认为我们必须有一个隐含的假设,就是我们在这里失踪了,这个假设是不同的。 但经过几个小时的search,我终于find了一些与这个问题有关的文件。 我正努力去理解那里使用的math,迄今为止没有成功。 特别是第一篇论文似乎正在讨论我想要做的事情,不幸的是没有代码例子和非常密集的math。 张正友,何立伟,“白板扫描与图像增强” http://research.microsoft.com/en-us/um/people/zhang/papers/tr03-39.pdf p.11 “由于透视变形,矩形的图像看起来像是一个四边形,但是由于我们知道它是一个空间上的矩形,所以我们能够估计出摄像机的焦距和矩形的高宽比。 ROBERT M. HARALICK“从矩形透视投影确定相机参数” http://portal.acm.org/citation.cfm?id=87146 “我们展示了如何在3D空间中使用未知大小和位置的矩形的2D透视投影来确定相对于矩形平面的摄像机视angular参数。

什么algorithm可以用来识别图像是“相同”还是相似,不pipe大小?

TinEye ,“反向图像search引擎”,允许你上传/链接到一个图像,它能够search它爬过的亿图像,它会返回到它发现的图像是相同的图像的链接。 但是,这不是一个天真的校验和或任何有关的。 通常能够find比您提供的原始图像更高分辨率和更低分辨率以及更大和更小尺寸的图像。 这是一个很好的使用服务,因为我经常发现一个图像,并希望它的最高分辨率的版本。 不仅如此,我还find了相同图像集的图像,图像中的人物处于不同的位置,但背景基本保持不变。 TinEye可以使用什么types的algorithm来比较一个图像和其他不同大小和压缩比的图像,但是仍然准确地发现它们是“相同的”图像或集合?

image processing的关键点是什么?

例如,在使用OpenCV时,经常使用像SURF这样的algorithm来检测关键点。 我的问题是这些关键点究竟是什么? 我知道他们是某种形象的“兴趣点”。 我也知道他们是规模不变的,我知道他们是循环的。 我也发现他们有方向,但我不明白它究竟是什么。 这是一个angular度,但在半径之间? 你能给一些解释吗? 我想我首先需要一些简单的东西,然后才能更容易理解论文。

algorithm来判断照片中的人的年龄是否可行?

我的朋友为非营利组织工作,致力于阻止非法利用craigslist.org等网站非法开发未成年人,craigslist.org是最受欢迎的媒体之一。 问题是现在或者在不远的将来是否有可能开发一种algorithm来分析一个人的照片并返回他们的相对年龄的预测。 这听起来像一个巨大的任务。 我唯一的想法是某种贝叶斯概率系统。 我知道,即使人们经常在判断某个人的年龄方面遇到困难,但是贝叶斯垃圾邮件filter被宣称为“十倍于人类的准确度”,所以也许有可能呢? 虽然我很缺乏经验。 如果有其他人可以build议这是否可行,如果可行,我将不胜感激。 编辑:谢谢大家的回应。 害怕这项研究是非常有帮助的,但我认为Hal的解决scheme是目前最实用的。

比较两个直方图

对于一个小项目,我需要比较一个图像和另一个图像,以确定图像是否大致相同。 图像很小,从25到100px不等。 图像意味着是相同的图像数据,但sublty不同,所以一个简单的像素相等性检查将无法正常工作。 考虑这两种可能的情况: 一个博物馆里的安全(CCTV)相机在看一个展览:我们想快速看看两个不同的video框架是否显示相同的场景,但是照明和相机聚焦的细微差别意味着它们将不相同。 与以48×48呈现的相同图标(但是两个图像将被缩小到32×32,所以直方图具有相同的总像素数)相比,以64×64呈现的vector计算机GUI图标的图片。 我决定使用直方图来表示每个图像,使用三个1D直方图:每个RGB通道一个 – 对于我来说,只使用颜色和忽略纹理和边缘直方图是安全的(另一种方法是对每个图像使用单个3D直方图,但我避免这一点,因为它增加了额外的复杂性)。 因此,我需要比较直方图,看它们是多么相似,如果相似性度量通过某个阈值,那么我可以有把握地说,各自的图像在视觉上是相同的 – 我会比较每个图像的相应的通道直方图(例如图像1的红色直方图与图像2的红色直方图,然后图像1的蓝色直方图与图像2的蓝色直方图,然后绿色直方图 – 所以我没有比较图像1的红色直方图与图像2的蓝色直方图,这将是愚蠢的)。 假设我有这三个直方图,它们代表三个图像的红色RGB通道的总结(为简单起见,使用5个像素来显示7像素图像): H1 H2 H3 XXX XXXXX XXXXXXXXXXXXX 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 H1 = [ 1, 3, 0, 2, 1 ] H2 = [ 3, 1, 0, 1, 2 ] H3 […]

如何在Android Activity屏幕上进行图像淡入淡出?

我想在Android Activity屏幕上显示一张照片,从淡淡的单调棕褐色逐渐淡入到最终的全彩色。 我知道如何在Graphic对象的Java Image / BufferedImage上做到这一点,但不幸的是我对Android编程环境一无所知。 谁能帮忙?

使用ImageIO.write jpg文件的问题

我使用下面的代码来写一个jpg文件: String url="http://img01.taobaocdn.com/imgextra/i1/449400070/T2hbVwXj0XXXXXXXXX_!!449400070.jpg"; String to="D:/temp/result.jpg"; ImageIO.write(ImageIO.read(new URL(url)),"jpg", new File(to)); 但我得到的结果是一个粉红色的背景图像: 如何解决这个问题? 你可以给我一些示例代码? (在J2SE库中) 感谢帮助 :)

如何改变图像中的特定颜色?

我的问题是,如果我有一个狮子形象,只是我想改变狮子的颜色,而不是背景颜色。 为此,我提到了这个问题,但是却把整个图像的颜色变成了一个整体。 而且图像看起来不怎么样。 我需要像Photoshop一样的颜色变化。 是否可以在coregraphics中做到这一点,或者我必须使用任何其他库。 编辑:我需要颜色变化像iQuikColor应用程序