接觸opencv有一段時(shí)間了,剛好公司最近有個(gè)指紋相關(guān)的功能,其中有個(gè)指紋特效晚上現(xiàn)成沒有很好定制型所以就用opencv試著寫了一個(gè)效果。
項(xiàng)目源碼:
https://github.com/woshiliyihang/touchZW
效果圖:

jason_g.gif
前期準(zhǔn)備
效果不是非常好但是修改定制簡(jiǎn)單,所需要準(zhǔn)備的有兩張圖片:
前景圖:

zhiwen.png
背景圖:

zhiwen_gr.png
一個(gè)是紅色前景,一個(gè)黑色背景,兩張圖片尺寸一樣大。
代碼實(shí)現(xiàn):
package com.jasonliyihang.zwdome;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.os.Handler;
import android.widget.ImageView;
import org.opencv.jason.DrawZW;
public class MainActivity extends AppCompatActivity {
private DrawZW drawZW;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected void onResume() {
super.onResume();
// 初始化opencv工具類
DrawZW.onResume(this, new Runnable() {
@Override
public void run() {
startAnim();
}
});
}
private void startAnim() {
//R.mipmap.zhiwen 前景圖 R.mipmap.zhiwen_gr 背景圖
drawZW = new DrawZW((ImageView) findViewById(R.id.img), R.mipmap.zhiwen, R.mipmap.zhiwen_gr);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// x y r 分別代表這個(gè) 圓心 xy 點(diǎn) 和 半徑 r
drawZW.logic(drawZW.getRgb().cols()/2,drawZW.getRgb().rows()/2, (int) (drawZW.getRgb().cols()*0.4f), 700);
}
}, 2001);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
drawZW.logic(drawZW.getRgb().cols()/3,drawZW.getRgb().rows()/3,drawZW.getRgb().cols()/3, 700);
}
}, 4001);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
drawZW.logic(drawZW.getRgb().cols()/2,drawZW.getRgb().rows()/4*3, (int) (drawZW.getRgb().cols()*0.7f), 700);
}
}, 6001);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
drawZW.logic(drawZW.getRgb().cols()/2,drawZW.getRgb().rows()/4,drawZW.getRgb().cols()*2, 700);
}
}, 8000);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
drawZW.free();//記得釋放內(nèi)存哦
}
}, 10000);
}
}
主要說明注釋里面已經(jīng)寫了!
簡(jiǎn)單介紹原理:就是通過畫圓的方式模擬點(diǎn)擊效果,然后使用圖形處理達(dá)到效果。
不喜勿噴,如果這個(gè)對(duì)你有幫助記得點(diǎn)贊哦 !!!!!!!!!!!!!!!!!!!!!!!!!