在 Java OpenCV 中替换像素的等效代码

Posted

技术标签:

【中文标题】在 Java OpenCV 中替换像素的等效代码【英文标题】:Equivalent code to replace pixels in Java OpenCV 【发布时间】:2014-03-12 07:25:18 【问题描述】:

我目前正在使用 OpenCV 做一个 android 应用程序,其中 Java 用于处理图像分割。我需要将像素从标签替换为 rgb_image。 Java中是否有任何等效的代码来执行与下面的c++代码类似的任务?

    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;
    

提前致谢

【问题讨论】:

【参考方案1】:

尝试使用 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);
        
    

有人知道如何使用迭代器的方式吗?我不熟悉。

【讨论】:

以上是关于在 Java OpenCV 中替换像素的等效代码的主要内容,如果未能解决你的问题,请参考以下文章

opencv Java构建中imshow的等效方法

OpenCV Java,读取中心像素的 HSV 值

OpenCV-像素值读写(java版)

OpenCV中Matlab的radon()等效函数

OpenCV中Matlab的filter2的等效函数

OpenCV 中的滤波函数