2014-03-12 49 views
0

我目前正在用OpenCV做一個Android應用程序,其中Java用於處理圖像分割。我需要將標籤中的像素替換爲rgb_image。 Java中是否有任何等價的代碼來執行與下面的C++代碼類似的任務?代替Java中的像素的等效代碼OpenCV

cv::Mat rgb_image(height, width, CV_8UC3); 
    cv::MatIterator_<cv::Vec3b> rgb_first = rgb_image.begin<cv::Vec3b>(); 
    cv::MatIterator_<cv::Vec3b> rgb_last = rgb_image.end<cv::Vec3b>(); 
    cv::MatConstIterator_<int> label_first = labels.begin<int>(); 

    cv::Mat centers_u8; 
    centers.convertTo(centers_u8, CV_8UC1, 255.0); 
    cv::Mat centers_u8c3 = centers_u8.reshape(3); 

    while (rgb_first != rgb_last) { 
      const cv::Vec3b& rgb = centers_u8c3.ptr<cv::Vec3b>(*label_first)[0]; 
      *rgb_first = rgb; 
      ++rgb_first; 
      ++label_first; 
    } 

在此先感謝

回答

0

嘗試使用Mat.get()方法得到的像素值。像:

 byte[] vec3=new byte[3]; 

    for(int i=0;i<src.cols();i++) 
    { 
     for(int j=0;j<src.rows();j++) 
     { 
      src.get(j, i, vec3); 
     } 
    } 

任何人都知道如何使用迭代器方式?我對此並不熟悉。