0

我最近开始研究 OpenCv4Android。我能够成功运行给定的图像操作示例。我想将 RGB 图像转换为 HSV 作为测试练习。我已经在 C++(WINDOWS)上完成了 OpenCv,并且也知道基本功能。

因此 cvtcolor 函数采用以下参数:
cvtcolor(mat src,mat dst,Imgproc.COLOR_TRANSFORMATION_TYPE,Number of Channels);
我尝试了不同的方法来检查输出,但我只得到了作为 LIVE CAMERA 视图的 cameraPreview。注意:Canny 等其他功能仍然有效(显示输出)。
我也怀疑是否有必要为此目的使用 JNI 即 NDK,或者大多数使用 OPENCV 库的应用程序可以在 main_activity.java 中完成(编写)并编译吗?
我是 OpenCv4Android 的入门者。对不起,如果我描述过度,欢迎提出所有建议。谢谢你。


    //METHOD 1
               case ImageManipulationsActivity.VIEW_MODE_HSV:
                    rgba=inputFrame.rgba();
                    rgbaInnerWindow = rgba.submat(top, top + height, left, left + width);
                    Imgproc.cvtColor(rgba, mIntermediateMat, Imgproc.COLOR_RGB2HSV_FULL);
                    Imgproc.cvtColor(mIntermediateMat, rgbaInnerWindow, Imgproc.COLOR_HSV2RGB_FULL);
                    rgbaInnerWindow.release();
                    break;


    //METHOD 2
           case  ImageManipulationsActivity.VIEW_MODE_HSV:
                Mat hsv= null;
            //  rgba=inputFrame.rgba();
            //  rgbaInnerWindow = rgba.submat(top, top + height, left, left + width);
                Imgproc.cvtColor(rgbaInnerWindow, mIntermediateMat, Imgproc.COLOR_RGBA2RGB);
                Imgproc.cvtColor(mIntermediateMat, hsv, Imgproc.COLOR_RGB2HSV_FULL);
                Imgproc.cvtColor(hsv, rgbaInnerWindow, Imgproc.COLOR_HSV2RGB_FULL);
                rgbaInnerWindow.release();
                break;  

   //METHOD 3
           case  ImageManipulationsActivity.VIEW_MODE_HSV:
                rgbaInnerWindow = rgba.submat(top, top + height, left, left + width);
                Imgproc.cvtColor(rgbaInnerWindow, rgbaInnerWindow, Imgproc.COLOR_HSV2RGB_FULL);
                rgbaInnerWindow.release();
                break;  
4

1 回答 1

0

如果你想显示 HSV 格式的图像,试试这个代码(我没有测试过,但它应该可以工作。)

Mat mRgba = inputFrame.rgba();
// mBgr is Mat in BGR Format
Imgproc.cvtColor(rgba, mBgr, Imgproc.COLOR_RGBA2BGR, 3);
// mHsv is Mat in Hsv Format
Imgproc.cvtColor(mBgr, mHsv, Imgproc.COLOR_BGR2HSV, 3);
// To display the image, we assume that mHsv is in BGR
Imgproc.cvtColor(mHsv, mRgb, Imgproc.COLOR_BGR2RGBA, 4);
// Display the image

我也怀疑是否有必要为此目的使用 JNI 即 NDK,或者大多数使用 OPENCV 库的应用程序可以在 main_activity.java 中完成(编写)并编译吗?

不,您不需要为此编写本机代码,对于大多数应用程序而言,OpenCV Java 绑定就足够了。即使您需要这样做,也很容易做到。

于 2014-10-28T05:26:13.493 回答