2012-10-10 27 views
0

我正在将我在JAVA中完成的代码转换为使用某种机器学习算法的C++。 问题是,一些像素值是不同的,如果我加载在Java下的图像方面加载它们在C + +(OpenCV)。 Java代码是:使用IplImage(C++)和BufferedImage(JAVA)提取不同的像素值

BufferedImage img = ImageIO.read(new java.io.FileInputStream("lena.jpg")); 

的C++代码是:

IplImage *img = cvLoadImage("lena.jpg", CV_LOAD_IMAGE_COLOR); 

当我尝试比较像素值I获得像差异:

的IplImage

169 72 83 
174 70 79 
183 72 81 
188 74 82 

BufferedImage

170 63 73 
175 65 74 
183 72 79 
188 74 82 

正如您所看到的值是相似的,但不相同,这会导致机器学习算法中的一些问题。有人遇到同样的问题吗?

回答

0

Jpeg解码器库的实现可能不同。不是一个大问题。

+0

对不起。问题出在我的代码中。 cvGet2d(img,x,y)返回不同的像素。解决方案是简单地使用cvGet2d(img,y,x)(x代表wigth,y代表高度)。 – user1735256