在OPENCV4Android中转换RGB2HSV

时间:2014-10-27 20:13:32

标签: android opencv opencv4android

我最近开始研究OpenCv4Android。我能够成功运行Image Manipulations Sample.I想将RGB图像转换为HSV作为测试练习。我已经在C ++(WINDOWS)上完成了OpenCv并且也了解了基本功能。

所以cvtcolor fucntions采用以下参数:
cvtcolor(mat src,mat dst,Imgproc.COLOR_TRANSFORMATION_TYPE,通道数);
我尝试了不同的方法来检查输出,但我只获得了相机摄影视图的相机。注意:其他功能,如Canny仍在工作(显示OUTPUT)。
另外我怀疑是否有必要为此目的使用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;  

1 个答案:

答案 0 :(得分: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绑定就足够了。即使你需要这样做也很容易。