我最近开始研究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;
答案 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绑定就足够了。即使你需要这样做也很容易。