February 23

PI3使用官方屏实现javafx触摸功能的实现

今天是一个值得开心的一天,困扰已久的pi3官方屏javafx实现触摸功能终于突破了。现通过操作笔记的形式将实施步骤记录如下:

  1. 1.下载jdk和openjdk,目前选择的版本为jdk-8u111-linux-arm32-vfp-hflt.tar.gz和armv6hf-sdk-8.60.8.zip。

    11

  2. 2.通过ftp上传至pi3,并解压,形成两个目录为jdk1.8.0_111和armv6hf-sdk。

    1

    2

  3. 3.修改linux中java的环境变量,在命令行中:sudo nano /etc/profile 对环境变量进行设置,在profile最后插入export PATH=/home/ubuntu/Java/jdk1.8.0_06/bin:$PATH保存退出,然后进行source /etc/profile 对环境变量生效,通过java –version 进行版本查看。

    3

  4. 4.java环境变量生效后,需要将openjdk加入到java运行命令中,这样可以实现触摸功能的实现,功能脚本参考原有runfxapp脚本,新功能脚本重新定义为runfxapp_touch,并将其复制至/usr/local/bin/目录下。

    COMMAND=”sudo java -Dcom.sun.javafx.touch=true -Dcom.sun.javafx.isEmbedded=true -Dcom.sun.javafx.vk.adjustwindow=true -Dcom.sun.javafx.virtualKeyboard=javafx -Djava.ext.dirs=/home/pi/armv6hf-sdk/rt/lib/ext -cp .:/home/pi/Rec/Servo_Handle.jar ScreensFramework”

    4

  5. 5.创建新的自动运行脚本auto_touch。

    export JAVA_HOME=/home/pi/Java/jdk1.8.0_111

    /usr/local/bin/runfxapp_touch -j /home/pi/Rec/Servo_Handle.jar ScreensFramework &

  6. 6.至此运行javafx程序可支持touch功能,运行Servo_Handle.jar其CPU占用率较理想。

    5

  7. 7.javafx触摸功能的实现将拓宽应用实用的范围,为更好的人机交互性能提供了卓越性能的提升。

Category: JavaFX | LEAVE A COMMENT
November 26

使用opencv2.4.13进行人脸识别测试

1.使用opencv2.4.13进行人脸图片的静态识别测试。

2.安装opencv开发环境,下载opencv2.4.13,解压之后得到文件夹opencv。

3.在Eclipse下添加jar路径,如图:

eclipse_2016-11-26_14-41-48

4.编辑opencv-2413.jar的Native Library,如图:

eclipse_2016-11-26_14-45-28

5.配置完成。

6.测试代码为:

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfRect;
import org.opencv.core.Point;
import org.opencv.core.Rect;
import org.opencv.core.Scalar;
import org.opencv.highgui.Highgui;
import org.opencv.objdetect.CascadeClassifier;

public class FaceDetector {

    public static void main(String[] args) {

        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        System.out.println(“\nRunning FaceDetector”);
        //System.out.println(FaceDetector.class.getResource(“lbpcascade_frontalface.xml”).getPath());

        String url0 = FaceDetector.class.getResource(“lbpcascade_frontalface.xml”).getPath();
        if (url0.startsWith(“/”, 0))
            url0=url0.replaceFirst(“/”, “”);
        try {
            url0=URLDecoder.decode(url0, “UTF-8”);
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } //this will replace %20 with spaces
        CascadeClassifier faceDetector = new CascadeClassifier(url0);

        String url1 = FaceDetector.class.getResource(“run.jpg”).getPath();
        if (url1.startsWith(“/”, 0))
           url1=url1.replaceFirst(“/”, “”);
        try {
            url1=URLDecoder.decode(url1, “UTF-8”);
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } //this will replace %20 with spaces
        Mat image = Highgui.imread(url1);

//        Mat image = Highgui
//                .imread(FaceDetector.class.getResource(“test.jpg”).getPath());

        MatOfRect faceDetections = new MatOfRect();
        faceDetector.detectMultiScale(image, faceDetections);

        System.out.println(String.format(“Detected %s faces”, faceDetections.toArray().length));

        for (Rect rect : faceDetections.toArray()) {
            Core.rectangle(image, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height),
                    new Scalar(0, 255, 0));
        }

        String filename = “dingxiao.png”;
        System.out.println(String.format(“Writing %s”, filename));
        Highgui.imwrite(filename, image);
    }
}

7.测试结果,图中绿色框为人脸识别结果,识别的准确率不是很高。

result

October 19

扬州-吴侬细语

扬州,只在诗句中念到过,今来到此地,和想象中的江南小城确实是曾相识,出差的落脚地是运河边有一定历史的盐商古宅-名为湖南会馆,从房间的阳台望出去,凌乱的小院点缀在郁郁葱葱的树木中,一种儿时才有的墙门生活又再次呈现在眼帘中,很有味道,很怀念~~~

Category: Life | LEAVE A COMMENT