android opencv导入进行编译

1、直接新建module进行导入,选择opencv的sdk

导入module模式,选择下载好的sdk,修改module name为OpenCV490。

有报错直接解决报错,没报错直接运行成功。

2、解决错误,同步成功

一般报错是gradle版本问题较多。我的报错如下:

复制代码
Build file 'D:\work\OpenCVJni\OpenCV480\build.gradle' line: 92



A problem occurred evaluating project ':OpenCV480'.

> Plugin with id 'kotlin-android' not found.

注释掉

//apply plugin: 'kotlin-android'

重新同步成功。

那就直接build,运行没再报错,就可以直接引用项目进行测试。

3、测试代码
复制代码
public class MainActivity extends AppCompatActivity {
    private Bitmap srcBitmap = null;
    private Bitmap   dstBitmap = null;
    private ImageView imageView = null;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // opencv初始化
        if (!OpenCVLoader.initDebug()) {
            // Handle initialization error
            return;
        }

        imageView = findViewById(R.id.imageView);
        srcBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.image); // 替换为你的图片资源

        findViewById(R.id.load).setOnClickListener(v -> {
            imageView.setImageBitmap(srcBitmap);
        });
        findViewById(R.id.equalize).setOnClickListener(v -> {
            // 加载成功后,进行直方图均衡化操作
            dstBitmap = equalizeHistogram(srcBitmap);
            imageView.setImageBitmap(dstBitmap);
        });
    }

    private Bitmap equalizeHistogram(Bitmap srcBitmap) {
        Mat srcMat = new Mat();
        Mat dstMat = new Mat();
        Utils.bitmapToMat(srcBitmap, srcMat);

        // 将图片转换为灰度图
        Imgproc.cvtColor(srcMat, srcMat, Imgproc.COLOR_BGR2GRAY);

        // 将源图像的通道转换为单通道
        List<Mat> channels = new ArrayList<>();
        Core.split(srcMat, channels);

        // 对每个通道进行直方图均衡化
        Imgproc.equalizeHist(channels.get(0), channels.get(0));

        // 合并通道
        Core.merge(channels, dstMat);

        // 将处理后的图像转换回RGB格式
        Imgproc.cvtColor(dstMat, dstMat, Imgproc.COLOR_GRAY2BGR);

        Bitmap equalizedBitmap = Bitmap.createBitmap(dstMat.cols(), dstMat.rows(), Bitmap.Config.ARGB_8888);
        Utils.matToBitmap(dstMat, equalizedBitmap);

        // 释放资源
        srcMat.release();
        dstMat.release();

        return equalizedBitmap;
    }
}

xml布局文件

复制代码
<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorWhite"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="80dp"


        android:orientation="horizontal">

        <Button
            android:id="@+id/load"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="15dp"
            android:background="@color/colorPrimaryDark"
            android:text="加载"
            android:textColor="@color/colorWhite" />
        <Button
            android:id="@+id/equalize"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="15dp"
            android:background="@color/colorPrimaryDark"
            android:text="直方图均衡"
            android:textColor="@color/colorWhite" />
    </LinearLayout>

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"

        android:background="@color/colorWhite">

        <ImageView
            android:id="@+id/imageView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:src="@mipmap/image" />
    </FrameLayout>

</androidx.appcompat.widget.LinearLayoutCompat>

代码截图

4、运行结果

如果需要编译任意一个opencv版本搞不定的话,可以找我寻求帮助。

相关推荐
硬件学长森哥1 小时前
Android影像基础--cameraAPI2核心流程
android·计算机视觉
昨日之日20061 小时前
Wan2.2-S2V - 音频驱动图像生成电影级质量的数字人视频 ComfyUI工作流 支持50系显卡 一键整合包下载
人工智能·音视频
SEO_juper4 小时前
大型语言模型SEO(LLM SEO)完全手册:驾驭搜索新范式
人工智能·语言模型·自然语言处理·chatgpt·llm·seo·数字营销
攻城狮7号5 小时前
腾讯混元翻译模型Hunyuan-MT-7B开源,先前拿了30个冠军
人工智能·hunyuan-mt-7b·腾讯混元翻译模型·30个冠军
zezexihaha5 小时前
从“帮写文案”到“管生活”:个人AI工具的边界在哪?
人工智能
算家云5 小时前
nano banana官方最强Prompt模板来了!六大场景模板详解
人工智能·谷歌·ai大模型·算家云·ai生图·租算力,到算家云·nano banana 提示词
暴躁的大熊5 小时前
AI助力决策:告别生活与工作中的纠结,明析抉择引领明智选择
人工智能
Gyoku Mint5 小时前
提示词工程(Prompt Engineering)的崛起——为什么“会写Prompt”成了新技能?
人工智能·pytorch·深度学习·神经网络·语言模型·自然语言处理·nlp
梁小憨憨5 小时前
zotero扩容
人工智能·笔记
大数据张老师5 小时前
AI架构师的思维方式与架构设计原则
人工智能·架构师·ai架构·后端架构