[英]Converting RGB to grayscale
output result I´m trying to convert from bgr to grayscale using opencv
in android
, when the application starts the screen displays the image as shown below and crashes.输出结果我正在尝试使用
android
opencv
从 bgr 转换为灰度,当应用程序启动时,屏幕显示如下所示的图像并崩溃。 I tried all possible ways but couldn't get the grayscale.我尝试了所有可能的方法,但无法获得灰度。 Please let me know the error in this code.
请让我知道此代码中的错误。 It would be very helpful.
这将非常有帮助。 Thanks.
谢谢。
JNIEXPORT void JNICALL
Java_com_preksh_cornerdetection_CameraClass_SendCamImageToNative(JNIEnv *env,
jobject instance,
jbyteArray data_,
jint mPreview_height,
jint mPreview_width,
jintArray Keypoints_java_) {
if(gCornerObject == NULL) {
return;
}
jbyte *data = env->GetByteArrayElements(data_, NULL);
jint *Keypoints_java = env->GetIntArrayElements(Keypoints_java_, NULL);
// Android returns data in NV21 format, convert it to RGB
cv::Mat cameraNV21Image(mPreview_height * 1.5, mPreview_width, CV_8UC1, data);
cv::Mat cameraRGBImage(mPreview_height * 1.5, mPreview_width, CV_8UC1);
cv::cvtColor(cameraNV21Image, cameraRGBImage, CV_YUV2RGB_NV21, 3);
cv::cvtColor(cameraRGBImage, cameraRGBImage, CV_BGR2GRAY);
gCornerObject->ProcessCameraImage(cameraRGBImage, mPreview_width, mPreview_height, Keypoints_java);
I think this problem is related with declaration cameraRGBImage .我认为这个问题与声明cameraRGBImage相关。 You defined this matrix as 1 channel matrix.
您将此矩阵定义为 1 通道矩阵。 To determine RGB matrix you should:
要确定 RGB 矩阵,您应该:
cv::Mat cameraRGBImage(mPreview_height * 1.5, mPreview_width, CV_8UC3);
If you convert RGB to Gray is recommended to declare a new matrix:如果将 RGB 转换为 Gray 建议声明一个新矩阵:
cv::Mat cameraGrayImagae;
cv::cvtColor(cameraRGBImage,cameraGrayImagae,CV_BGR2GRAY);
Check it.核实。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.