Skip to content

用 Visual Studio(VS)开发基于 OpenCV 的图片腐蚀、用 Android Studio(AS) 以 JNI 方式开发基于 OpenCV 的图片腐蚀

Notifications You must be signed in to change notification settings

weichaoIO/OpenCV_Erode

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

[TOC]


#

OpenCV 腐蚀图片


#TODO

  • [] 【在 VS 上配置 OpenCV 工程】上传到个人网站。

#搭建工程

##VS 工程

VS 工程搭建参考【在 VS 上配置 OpenCV 工程】。

VS 工程目录结构:

##AS 工程

AS 工程搭建参考:

AS 工程目录结构:


#修改工程

##VS 工程

###修改 main.cpp

#include <opencv2\highgui\highgui.hpp>
#include <opencv2\imgproc\imgproc.hpp>

using namespace cv;

int main() {
	Mat srcImageMat = imread("test.png");
	imshow("srcImage", srcImageMat);

	Mat destImageMat;
	Mat element = getStructuringElement(MORPH_RECT, Size(10, 10));
	erode(srcImageMat, destImageMat, element);
	imshow("destImage", destImageMat);

	waitKey(0);
	return 0;
}

###添加 test.png 到 main.cpp 所在目录

###运行结果

##AS 工程

所有修改内容:

###修改 activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="io.weichao.opencv.MainActivity">

    <ImageView
        android:id="@+id/src_image"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <ImageView
        android:id="@+id/dest_image"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

###添加 test.png

###修改 opencv.cpp

#include <jni.h>

#include <opencv2/imgproc/imgproc.hpp>

using namespace cv;

extern "C"
JNIEXPORT jintArray JNICALL
Java_io_weichao_opencv_MainActivity_nErode(JNIEnv *env, jobject obj /* this */,
                                             jintArray pixelArray,
                                             int width, int height) {
    jint *pixelPoint;
    pixelPoint = env->GetIntArrayElements(pixelArray, JNI_FALSE);
    Mat srcImageMat(height, width, CV_8UC4, (unsigned char *) pixelPoint);

    Mat destImageMat;
    Mat element = getStructuringElement(MORPH_RECT, Size(10, 10));
    erode(srcImageMat, destImageMat, element);

    int size = width * height;
    jintArray retArray = env->NewIntArray(size);
    jint *ptr = (jint *) destImageMat.ptr(0);
    env->SetIntArrayRegion(retArray, 0, size, ptr);
    env->ReleaseIntArrayElements(pixelArray, pixelPoint, 0);

    return retArray;
}

###修改 MainActivity.java

package io.weichao.opencv;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.ImageView;

import org.opencv.android.OpenCVLoader;

public class MainActivity extends AppCompatActivity {
    static {
        if (OpenCVLoader.initDebug()) {
            System.loadLibrary("opencv");
        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ImageView srcImage = (ImageView) findViewById(R.id.src_image);
        ImageView destImage = (ImageView) findViewById(R.id.dest_image);

        /*显示原图*/
        Bitmap srcBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.test);
        srcImage.setImageBitmap(srcBitmap);

        /*处理图像*/
        int width = srcBitmap.getWidth();
        int height = srcBitmap.getHeight();
        int[] pixelArray = new int[width * height];
        srcBitmap.getPixels(pixelArray, 0, width, 0, 0, width, height);
        pixelArray = nErode(pixelArray, width, height);

        /*显示处理后的图像*/
        Bitmap destBitmap = Bitmap.createBitmap(pixelArray, width, height, Bitmap.Config.ARGB_8888);
        destImage.setImageBitmap(destBitmap);
    }

    private native int[] nErode(int[] pixelArray, int width, int height);
}

###运行结果


About

用 Visual Studio(VS)开发基于 OpenCV 的图片腐蚀、用 Android Studio(AS) 以 JNI 方式开发基于 OpenCV 的图片腐蚀

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages