无法从opencv处理unix上的图像,但同样的程序在windows上工作

时间:2015-06-06 10:24:28

标签: java linux opencv image-processing computer-vision

我在Windows平台上测试了我的程序,效果很好。但是当我尝试在Raspbian,Unix上运行它时,它在iplcvLoadimage之后就没有了。

可能是什么问题?

这是我的代码

mport com.googlecode.javacv.cpp.opencv_core.CvPoint;
import com.googlecode.javacv.cpp.opencv_core.IplImage;
import static com.googlecode.javacv.cpp.opencv_core.cvSize;
import static com.googlecode.javacv.cpp.opencv_core.cvZero;
import static com.googlecode.javacv.cpp.opencv_core.cvMinMaxLoc;
import static com.googlecode.javacv.cpp.opencv_core.IPL_DEPTH_32F;
import static com.googlecode.javacv.cpp.opencv_core.cvCreateImage;
import static com.googlecode.javacv.cpp.opencv_imgproc.cvMatchTemplate;
import static com.googlecode.javacv.cpp.opencv_highgui.cvLoadImage;
import static com.googlecode.javacv.cpp.opencv_imgproc.CV_TM_SQDIFF;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import org.opencv.core.Core;

public class MatchTemplateTest {
    
    public static HashMap<String,Double> getPatternMatch(String img)
    {
        ArrayList<String>names=new ArrayList<>();
        HashMap<String,Double> MatchMap=new HashMap<>();
        
        File []f=null;
        try
        {
           
            String path=new File(new File(".").getCanonicalPath()+"/Output"+"/Logo").getAbsolutePath();
            f=new File(path).listFiles();
        } catch (Exception e) {
        }
        IplImage src=null;
        try {
          
		  // this is where the problem is 
		  
            src= cvLoadImage(img,0);
			
		 // can not process further	
        } catch (Exception e) {
            System.out.println("ERROR  "+e);
        }

1 个答案:

答案 0 :(得分:0)

如果问题在于阅读图像,那么有两种可能性

  1. 图像不存在,或图像路径错误。在* nix中,路径用斜杠'/'分隔,例如, /home/asharma/data/myimage.pgm,但在Windows中,它用反斜杠分隔,例如C:\ User \ Data \ My Image.pgm
  2. 图像的图像解码器不存在于库的版本中。例如,如果图像是PNG格式,但是未使用PNG编译opencv,则无法读取图像。
  3. System.out.println("ERROR "+e);的输出是什么?