OpenCV on Raspberry Pi - Using Java(6)- 使用 OpenCV 拍攝照片(Camera Module) by Michael | CodeData
top

OpenCV on Raspberry Pi - Using Java(6)- 使用 OpenCV 拍攝照片(Camera Module)

分享:

OpenCV on Raspberry Pi – Using Java(5)- 使用 OpenCV 拍攝照片(USB Webcam) << 前情

準備工作

  • 個人電腦
    • 已經安裝好OpenCV
    • 已經安裝與設定好NetBeans本地與遠端開發環境
  • RASPBERRY PI 3 MODEL B
    • 已經安裝好OpenCV
    • 可以在個人電腦透過SSH連線到Raspberry Pi

安裝與啟動 Raspberry Pi Camera Module

Raspberry Pi官方的相機模組,比一般的USB Webcam還要小,適合使用在各種專案的應用。你購買的Raspberry Pi Camera Module,包含一個照像鏡頭的電路板和一條白色的排線。連接之前注意下列事項:

  • 先關機後關閉Raspberry Pi的電源。
  • 連接的時候小心白色排線,容易因為施力不當而破損

在相機模組這一端,排線末端藍色的部份,面向鏡頭的背面連接:

OpenCVJava_06_001

在Raspberry Pi這一端,排線末端藍色的部份,面向白色卡榫連接:

OpenCVJava_06_002

連接好Camera Module以後,啟動Raspberry Pi,依照下列的步驟執行設定:

  1. 執行下列的指令啟動設定應用程式:

    sudo raspi-config
  2. 選擇「Enable Camera」:

    OpenCVJava_06_003

  3. 選擇「Yes」:

    OpenCVJava_06_004

  4. 選擇「Ok」:

    OpenCVJava_06_005

  5. 選擇「Finish」:

    OpenCVJava_06_006

  6. 選擇「Yes」讓Raspberry Pi重新啟動:

    OpenCVJava_06_007

安裝 Raspberry Pi Camera Module 需要的套件

OpenCV支援USB Webcam,如果你想要使用Raspberry Pi Camera Module,必須額外安裝V4L2套件。在個人電腦連線到Raspberry Pi的視窗,執行下列的指令安裝V4L2套件(需要花費一些時間,請耐心等候):

cd ~
wget http://linuxtv.org/downloads/v4l-utils/v4l-utils-1.6.2.tar.bz2
tar xfvj v4l-utils-1.6.2.tar.bz2
sudo apt-get -y install autoconf gettext libtool libjpeg-dev
cd v4l-utils-1.6.2
autoreconf -vfi
./configure
make
sudo make install

安裝完成後,先確認已經連接並啟動Raspberry Pi Camera Module,同樣在連線到Raspberry Pi的視窗,執行下列的指令啟動V4L2:

cd ~
raspistill -o test.jpg
sudo modprobe bcm2835-v4l2

為了讓Raspberry Pi在開機以後就可以自動載入V4L2,在連線到Raspberry Pi的視窗執行下面的指令開啟模組設定檔:

sudo nano /etc/modules

在檔案中加入下面的內容並儲存:

bcm2835-v4l2

執行下面的指令讓Raspberry Pi重新啟動:

subo reboot    

使用 Camera Module 拍攝與儲存照片

在NetBeans新增一個Java應用程式專案,參考下面的內容完成應用程式主類別:

package net.macdidi5.opencv;

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.videoio.VideoCapture;

public class HelloCameraModule {

    static {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    }

    public static void main(String[] args) {
        Core.setErrorVerbosity(false);
        VideoCapture camera = new VideoCapture(0);
        delay(1000);

        if(!camera.isOpened()){
            System.out.println("Camera Error");
        }
        else {
            System.out.println("Camera OK");
        }

        Mat frame = new Mat();
        camera.read(frame);

        Imgcodecs.imwrite("/home/pi/HelloCameraModule.png", frame);
    }

    private static void delay(long ms) {
        try {
            Thread.sleep(ms);
        }
        catch (InterruptedException e) {
            System.out.println(e);
        }
    }

}

為應用程式專案執行Raspberry Pi遠端執行設定,包含遠端執行與VM Options,執行應用程式專案,拍攝的照片儲存在下面的資料夾:

/home/pi/HelloCameraModule.png

Windows作業系統執行下面的指令,傳送照片檔案到個人電腦:

pscp [email protected]:/home/pi/HelloCameraModule.png HelloCameraModule.png

Mac OS執行下面的指令,傳送照片檔案到個人電腦:

scp [email protected]:/home/pi/HelloCameraModule.png HelloCameraModule.png

後續 >> OpenCV on Raspberry Pi – Using Java(7)- 使用 OpenCV 截取與顯示影片

分享:
按讚!加入 CodeData Facebook 粉絲群

相關文章

留言

留言請先。還沒帳號註冊也可以使用FacebookGoogle+登錄留言

林瑞擇05/16

請問我到make時編譯錯誤出現In file included from jpeg.c:24:0:
jpeg_memsrcdest.h:4:1: error: conflicting types for ‘jpeg_mem_src’
jpeg_mem_src (j_decompress_ptr cinfo, unsigned char * buffer,
^~~~~~~~~~~~
代表著甚麼?

熱門論壇文章

熱門技術文章