100% found this document useful (3 votes)
20 views

(Ebook) Android Application Programming with OpenCV 3_ Build Android apps to capture, manipulate, and track objects in 2D and 3D by kan - Experience the full ebook by downloading it now

The document provides information about various eBooks related to Android application development, including titles focused on OpenCV, Kotlin, and game development with Unity. It offers instant access to digital formats like PDF, ePub, and MOBI for readers to start learning on any device. Additionally, it includes details about the author and reviewers of one specific eBook, 'Android Application Programming with OpenCV 3,' highlighting its content and structure.

Uploaded by

garobritze
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (3 votes)
20 views

(Ebook) Android Application Programming with OpenCV 3_ Build Android apps to capture, manipulate, and track objects in 2D and 3D by kan - Experience the full ebook by downloading it now

The document provides information about various eBooks related to Android application development, including titles focused on OpenCV, Kotlin, and game development with Unity. It offers instant access to digital formats like PDF, ePub, and MOBI for readers to start learning on any device. Additionally, it includes details about the author and reviewers of one specific eBook, 'Android Application Programming with OpenCV 3,' highlighting its content and structure.

Uploaded by

garobritze
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 81

Instant Ebook Access, One Click Away – Begin at ebooknice.

com

(Ebook) Android Application Programming with


OpenCV 3_ Build Android apps to capture,
manipulate, and track objects in 2D and 3D by kan

https://ebooknice.com/product/android-application-
programming-with-opencv-3-build-android-apps-to-capture-
manipulate-and-track-objects-in-2d-and-3d-50195958

OR CLICK BUTTON

DOWLOAD EBOOK

Get Instant Ebook Downloads – Browse at https://ebooknice.com


Instant digital products (PDF, ePub, MOBI) ready for you
Download now and discover formats that fit your needs...

Start reading on any device today!

(Ebook) How to Build Android Apps with Kotlin: A practical guide to developing,
testing, and publishing your first Android apps by Alex Forrester; Eran Boudjnah;
Alexandru Dumbravan; Jomar Tigcal ISBN 9781837634934, 1837634939

https://ebooknice.com/product/how-to-build-android-apps-with-kotlin-a-practical-
guide-to-developing-testing-and-publishing-your-first-android-apps-56378466

ebooknice.com

(Ebook) Sams Teach Yourself Android Application Development in 24 Hours, 2nd Edition
by kan

https://ebooknice.com/product/sams-teach-yourself-android-application-
development-in-24-hours-2nd-edition-50194954

ebooknice.com

(Ebook) Android Continuous Integration: Build-Deploy-Test Automation for Android


Mobile Apps by Pradeep Macharla ISBN 9781484227954, 1484227956

https://ebooknice.com/product/android-continuous-integration-build-deploy-test-
automation-for-android-mobile-apps-6730348

ebooknice.com

(Ebook) Unity 5 for Android Essentials_ A fast-paced guide to building impressive


games and applications for Android devices with Unity 5 by kan

https://ebooknice.com/product/unity-5-for-android-essentials-a-fast-paced-guide-
to-building-impressive-games-and-applications-for-android-devices-with-
unity-5-50194522

ebooknice.com
(Ebook) Building Android Apps in Python Using Kivy with Android Studio: With
Pyjnius, Plyer, and Buildozer by Ahmed Fawzy Mohamed Gad ISBN 9781484250303,
1484250303

https://ebooknice.com/product/building-android-apps-in-python-using-kivy-with-
android-studio-with-pyjnius-plyer-and-buildozer-50195834

ebooknice.com

(Ebook) Android Studio 3.3 Development Essentials - Android 9 Edition: Developing


Android 9 Apps Using Android Studio 3.3, Java and Android Jetpack by Neil Smyth ISBN
9781795654760, 1795654767

https://ebooknice.com/product/android-studio-3-3-development-essentials-
android-9-edition-developing-android-9-apps-using-android-studio-3-3-java-and-
android-jetpack-10469504

ebooknice.com

(Ebook) Android Studio Iguana Essentials - Kotlin Edition: Developing Android Apps
Using Android Studio 2023.2.1 and Kotlin by Neil Smyth

https://ebooknice.com/product/android-studio-iguana-essentials-kotlin-edition-
developing-android-apps-using-android-studio-2023-2-1-and-kotlin-56375076

ebooknice.com

(Ebook) Pro Android Python with SL4A: Writing Android Native Apps Using Python, Lua,
and Beanshell by Ferrill, Paul ISBN 9781430235699, 1430235691

https://ebooknice.com/product/pro-android-python-with-sl4a-writing-android-
native-apps-using-python-lua-and-beanshell-43191386

ebooknice.com

(Ebook) Head First Android Development: A Learner's Guide to Building Android Apps
with Kotlin by Dawn Griffiths, David Griffiths ISBN 9781492076520, 149207652X

https://ebooknice.com/product/head-first-android-development-a-learner-s-guide-
to-building-android-apps-with-kotlin-36451462

ebooknice.com
www.it-ebooks.info
Android Application
Programming with OpenCV 3

Build Android apps to capture, manipulate, and track


objects in 2D and 3D

Joseph Howse

BIRMINGHAM - MUMBAI

www.it-ebooks.info
Android Application Programming with OpenCV 3

Copyright © 2015 Packt Publishing

All rights reserved. No part of this book may be reproduced, stored in a retrieval
system, or transmitted in any form or by any means, without the prior written
permission of the publisher, except in the case of brief quotations embedded in
critical articles or reviews.

Every effort has been made in the preparation of this book to ensure the accuracy
of the information presented. However, the information contained in this book is
sold without warranty, either express or implied. Neither the author, nor Packt
Publishing, and its dealers and distributors will be held liable for any damages
caused or alleged to be caused directly or indirectly by this book.

Packt Publishing has endeavored to provide trademark information about all of the
companies and products mentioned in this book by the appropriate use of capitals.
However, Packt Publishing cannot guarantee the accuracy of this information.

First published: September 2013


Second Edition: June 2015

Production reference: 1230615

Published by Packt Publishing Ltd.


Livery Place
35 Livery Street
Birmingham B3 2PB, UK.

ISBN 978-1-78528-538-7

www.packtpub.com

www.it-ebooks.info
Credits

Author Copy Editor


Joseph Howse Dipti Mankame

Reviewers Project Coordinator


Jared Burrows Milton Dsouza
Arjun Comar
Manav Kedia Proofreader
Safis Editing
Yati Sagade

Indexer
Commissioning Editor
Tejal Daruwale Soni
Veena Pagare

Production Coordinator
Acquisition Editor
Manu Joseph
Vivek Anantharaman

Cover Work
Content Development Editor
Manu Joseph
Parita Khedekar

Technical Editor
Ryan Kochery

www.it-ebooks.info
About the Author

Joseph Howse lives in Canada. During the cold winters, he grows a beard and his
four cats grow thick coats of fur. He combs the cats every day. Sometimes, the cats
pull his beard.

Joseph has authored OpenCV for Secret Agents, OpenCV Android Application
Programming, and OpenCV Computer Vision with Python. When he is not writing
books or grooming cats, Joseph provides consulting, training, and software
development services. His company is Nummist Media (http://nummist.com).

I dedicate my work to Sam, Jan, Bob, Bunny, and the cats, who have
been my lifelong guides and companions.

OpenCV Android Application Programming is now in its second edition.


I am indebted to all the editors and technical reviewers who have
contributed to planning, polishing, and marketing both the editions
of the book. These people have guided me with their experience and
have saved me from sundry errors and omissions. Please meet the
second edition's technical reviewers by reading their biographies here!

I want to thank the readers and everybody else at Packt Publishing


and the OpenCV communities. We have done so much together and
our journey continues!

www.it-ebooks.info
About the Reviewers

Jared Burrows started working on Android development in 2011 when he got his
first smartphone. He learned Java quickly and started putting applications on Google
Play (the Android market). During this time, he was in a college and was interning at
Northrop Grumman; currently, he works there as a full-time software engineer.

As his programming skills have matured through the years, he has produced 1-2 new
apps each year and constantly remains active on websites such as StackOverflow,
developing a good reputation and helping others. When he bought a Google Glass
back in 2013, the first thing he created with an open source repository on GitHub
named OpenQuartz, and he has worked on implementing OpenCV into a few
example applications with Google Glass.

His applications on Google Play are available at


https://play.google.com/store/apps/developer?id=Burrows+Apps.

His example applications with Google Glass + OpenCV are available at


https://github.com/jaredsburrows/OpenQuartz.

www.it-ebooks.info
Manav Kedia is a final-year undergraduate student of the department of Computer
Science and Engineering at the Indian Institute of Technology, Kharagpur. He has
interned with Adobe Research Labs, Bengaluru, and ETH Zurich previously. He is a
passionate programmer and software enthusiast. Android application development is
his forte among other things, in which he has bagged laurels from various hackathons
organized by IBM and Shephertz. He is proficient in programming languages such as
C++, Java, Python, AngularJS, and MySQL. He always ventures into new stuff. You
can reach him at [email protected].

I would like to thank the author for this brilliantly written book.
Reviewing this book was a great learning experience. I would
like to thank Milton Dsouza for coordinating with me throughout
the review. I would also like to thank my parents and friends for
supporting me in everything I do.

Yati Sagade is a programmer interested in, and working on, problems around
image analysis and computer vision. He has developed several computer vision
apps on the Android platform, including a work-in-progress "Air Piano" app named
Dirac, which along with his other projects can be found at https://github.com/
yati-sagade/.

www.it-ebooks.info
www.PacktPub.com

Support files, eBooks, discount offers, and more


For support files and downloads related to your book, please visit www.PacktPub.com.

Did you know that Packt offers eBook versions of every book published, with PDF
and ePub files available? You can upgrade to the eBook version at www.PacktPub.com
and as a print book customer, you are entitled to a discount on the eBook copy. Get in
touch with us at [email protected] for more details.

At www.PacktPub.com, you can also read a collection of free technical articles,


sign up for a range of free newsletters and receive exclusive discounts and offers
on Packt books and eBooks.
TM

https://www2.packtpub.com/books/subscription/packtlib

Do you need instant solutions to your IT questions? PacktLib is Packt's online digital
book library. Here, you can search, access, and read Packt's entire library of books.

Why subscribe?
• Fully searchable across every book published by Packt
• Copy and paste, print, and bookmark content
• On demand and accessible via a web browser

Free access for Packt account holders


If you have an account with Packt at www.PacktPub.com, you can use this to access
PacktLib today and view 9 entirely free books. Simply use your login credentials for
immediate access.

www.it-ebooks.info
www.it-ebooks.info
Table of Contents
Preface iii
Chapter 1: Setting Up OpenCV 1
System requirements 2
Setting up a development environment 3
Getting prebuilt OpenCV4Android 5
Building OpenCV4Android from source 6
Building the OpenCV samples with Eclipse 8
Troubleshooting Eclipse projects 18
Troubleshooting the USB connection 21
Finding the documentation and help 23
Summary 23
Chapter 2: Working with Camera Frames 25
Designing our app – Second Sight 25
Creating the Eclipse project 28
Enabling camera and disk access in the manifest 33
Creating menu and string resources 36
Previewing and saving photos in CameraActivity 38
Deleting, editing, and sharing photos in LabActivity 51
Summary 55
Chapter 3: Applying Image Effects 57
Adding files to the project 57
Defining the Filter interface 60
Mixing color channels 60
Making subtle color shifts with curves 64
Mixing pixels with convolution filters 71
Adding the filters to CameraActivity 74
Summary 80

[i]

www.it-ebooks.info
Table of Contents

Chapter 4: Recognizing and Tracking Images 81


Adding files to the project 81
Understanding image tracking 83
Writing an image tracking filter 86
Adding the tracker filters to CameraActivity 94
Summary 100
Chapter 5: Combining Image Tracking with 3D Rendering 101
Adding files to the project 102
Defining the ARFilter interface 102
Building projection matrices in CameraProjectionAdapter 103
Modifying ImageDetectionFilter for 3D tracking 108
Rendering the cube in ARCubeRenderer 115
Adding 3D tracking and rendering to CameraActivity 119
Learning more about 3D graphics on Android 124
Summary 124
Chapter 6: Mixing Java and C++ via JNI 125
Understanding the role of JNI 125
Measuring performance 127
Adding files to the project 129
Building the native library 131
Modifying the filter interface 135
Porting the channel-mixing filters to C++ 137
Porting the edge-enhancing filter to C++ 144
Porting the ARFilter to C++ 147
Learning more about OpenCV and C++ 162
Summary 163
Index 165

[ ii ]

www.it-ebooks.info
Preface
This book will show you how to use OpenCV in an Android app that displays a
camera feed, saves and shares photos, manipulates colors and edges, and tracks
real-world objects in 2D or 3D. Integration with OpenGL is also introduced so that
you can start building augmented reality (AR) apps that superimpose virtual 3D
scenes onto tracked objects in the camera feed.

OpenCV is an open-source, cross-platform library that provides building blocks


for computer vision experiments and applications. It offers high-level interfaces
to capture, process, and present image data. For example, it abstracts away details
about camera hardware and array allocation. OpenCV is widely used in both
academia and industry.

Android is a mobile operating system that is mostly open source. For Java developers,
it offers a high-level application framework called Android SDK. Android apps are
modular insofar as they have standard, high-level interfaces to launch each other and
share data. Mobility, a high level of abstraction, and data sharing are great starting
points for a photo sharing app, similar to the one we will build.

Although OpenCV and Android provide a lot of high-level abstractions (and a lot of
open source code for curious users to browse), they are not necessarily easy to use
for newcomers. Setting up an appropriate development environment and translating
the libraries' broad functionality into application features are both daunting tasks.
This concise book helps us by placing an emphasis on a clean setup, clean application
design, and a simple understanding of each function's purpose.

The need for a book on this subject is particularly great because OpenCV's Java
and Android bindings are quite new and their documentation is not yet mature.
Little has been written about the steps for integrating OpenCV with Android's
standard camera, media, and graphics APIs. Surely, integration is a major part
of an app developer's work, so it is a major focus of this book.

[ iii ]

www.it-ebooks.info
Preface

By the end of our journey together, you will have a taste of the breadth of application
features that are made possible by integrating OpenCV with other Android libraries.
You will have your own small library of reusable classes that you can extend or modify
for your future computer vision projects. You will have a development environment
and the knowledge to use it, and you will be able to make more apps!

What this book covers


Chapter 1, Setting Up OpenCV, covers the steps to set up OpenCV and an Android
development environment, including Eclipse and Android SDK.

Chapter 2, Working with Camera Frames, shows how to integrate OpenCV into an
Android Java app that can preview, capture, save, and share photos.

Chapter 3, Applying Image Effects, explores OpenCV's functionality to manipulate


color channels and neighborhoods of pixels. The Apache Commons Math library
is also introduced. We expand our app to include channel-mixing filters, "curve"
filters, and a filter that darkens edges.

Chapter 4, Recognizing and Tracking Images, demonstrates the steps to recognize


and track a known target (such as a painting) when it appears in a video feed.
We expand our app so that it draws an outline around any tracked target.

Chapter 5, Combining Image Tracking with 3D Rendering, improves upon our previous
tracking technique by determining the target's position and rotation in real 3D
space. We expand our app so that it sets up an OpenGL 3D scene with the same
perspective as the Android device's real camera. Then, we draw a 3D cube atop
any tracked target.

Chapter 6, Mixing Java and C++ via JNI, demonstrates the use of Java Native Interface
(JNI) to call C++ functions from Java. We convert some of our application's filters
to C++ in order to learn about writing efficient, cross-platform code with OpenCV's
C++ interface.

What you need for this book


This book provides setup instructions for OpenCV and an Android development
environment, including Eclipse and Android SDK. The software is cross-platform,
and the instructions cover Windows, Mac, and Linux. Other Unix-like environments
may work, too, if you are willing to do your own tailoring of the setup steps.

[ iv ]

www.it-ebooks.info
Preface

You need a mobile device running Android 2.2 (Froyo) or greater, and it must have a
camera. Preferably, it should have two cameras, front and rear.

Who this book is for


This book is great for Java developers who are new to computer vision and who
like to learn through application development. It is assumed that you have previous
experience in Java but not necessarily Android. A basic understanding of image data
(for example, pixels and color channels) would be helpful, too.

Conventions
In this book, you will find a number of text styles that distinguish between different
kinds of information. Here are some examples of these styles and an explanation of
their meaning.

Code words in text, database table names, folder names, filenames, file extensions,
pathnames, dummy URLs, user input, and Twitter handles are shown as follows:
"It will interface with the other apps on the device, via Android's MediaStore and
Intent classes."

A block of code is set as follows:


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=
"http://schemas.android.com/apk/res/android"
package="com.nummist.secondsight"
android:versionCode="1"
android:versionName="1.0">

When we wish to draw our attention to a particular part of a code block, the relevant
lines or items are set in bold:
android:label="@string/app_name"
android:screenOrientation="landscape">
<intent-filter>

Any command-line input or output is written as follows:


$ cd /etc/udev/rules.d/
$ sudo touch 51-android.rules

[v]

www.it-ebooks.info
Preface

New terms and important words are shown in bold. Words that you see on the
screen, for example, in menus or dialog boxes, appear in the text like this: "These
steps should be repeated for all the native (C++) projects, which include OpenCV
Sample – face-detection and OpenCV Tutorial 2 - Mixed Processing."

Warnings or important notes appear in a box like this.

Tips and tricks appear like this.

Reader feedback
Feedback from our readers is always welcome. Let's know what you think about this
book—what you liked or disliked. Reader feedback is important for us as it helps us
develop titles that you will really get the most out of.

To send us general feedback, simply e-mail [email protected] and mention


the book's title in the subject of your message.

If there is a topic that you have expertise in and you are interested in either writing
or contributing to a book, see our author guide at www.packtpub.com/authors.

Customer support
Now that you are the proud owner of a Packt book, we have a number of things to
help you get the most from your purchase.

Downloading the example code


You can download the example code files from your account at http://www.
packtpub.com for all the Packt Publishing books you purchased. If you purchased
this book elsewhere, you can visit http://www.packtpub.com/support and register
to have the files e-mailed directly to you.

[ vi ]

www.it-ebooks.info
Preface

Downloading the color images of this book


We also provide you with a PDF file that has color images of the screenshots/
diagrams used in this book. The color images will help you better understand the
changes in the output. You can download this file from https://www.packtpub.
com/sites/default/files/downloads/B04598_Graphics.pdf.

Errata
Although we took every care to ensure the accuracy of our content, mistakes do
happen. If you find a mistake in one of our books—maybe a mistake in the text or
code—we would be grateful if you could report this to us. By doing so, you can save
other readers from frustration and help us improve subsequent versions of this book.
If you find any errata, please report them by visiting http://www.packtpub.com/
submit-errata, selecting your book, clicking on the Errata Submission Form link,
and entering the details of your errata. Once your errata are verified, your submission
will be accepted and the errata will be uploaded to our website or added to any list of
existing errata under the Errata section of that title.

To view the previously submitted errata, go to https://www.packtpub.com/books/


content/support and enter the name of the book in the search field. The required
information will appear under the Errata section.

Piracy
Piracy of the copyrighted material on the Internet is an ongoing problem across all
media. At Packt, we take the protection of our copyright and licenses very seriously.
If you come across any illegal copies of our works in any form on the Internet, please
provide us with the location address or website name immediately so that we can
pursue a remedy.

Please contact us at [email protected] with a link to the suspected


pirated material.

We appreciate your help in protecting our authors and our ability to bring you
valuable content.

[ vii ]

www.it-ebooks.info
Preface

Questions
If you have a problem with any aspect of this book, you can contact us at
[email protected], and we will do our best to address the problem.
You can also contact the author directly at [email protected] or you
can check his website, http://nummist.com/opencv/, for answers to common
questions about the book.

[ viii ]

www.it-ebooks.info
Setting Up OpenCV
This chapter is a quick guide to setting up a development environment for Android
and OpenCV. We will also look at the OpenCV sample applications, documentation,
and community.

By the end of this chapter, our development environment will include the following
components:

• Java Development Kit (JDK) 7: This includes tools for Java programming.
JDK 7 is the exact version that we require. The more recent version, JDK 8,
is not yet supported for Android development.
• Cygwin 1.7 or greater (Windows only): This is a compatibility layer that
provides Unix-like programming tools on Windows. We need it in order
to develop in C++ on Android.
• Android Software Development Kit (Android SDK) r24.0.2 or greater:
This includes tools for programming Android apps in Java.
• Android Native Development Kit (Android NDK) r10d or greater:
This includes tools for programming Android apps in C++.
• Eclipse 4.4.2 (Luna) or greater: This is an integrated development
environment (IDE). Although Google has started to recommend Android
Studio as an IDE for Android development, Eclipse is still supported too.
The OpenCV library and official samples are preconfigured as Eclipse projects,
so for our purposes, Eclipse is a bit more convenient than Android Studio.
• Java Development Tools (JDT): This is an Eclipse plugin for Java
programming (already included in most Eclipse distributions).
• C/C++ Development Tooling (CDT) 8.2.0 or greater: This is an Eclipse
plugin for C/C++ programming.

[1]

www.it-ebooks.info
Setting Up OpenCV

• Android Development Tools (ADT) 24.0.2 or greater: This is an Eclipse


plugin for Android programming.
• OpenCV4Android 3.0 or greater: This is OpenCV's Android version,
including Java and C++ libraries.

At the time of writing, OpenCV4Android's latest version is 3.0.


This book targets version 3.0, but it also includes comprehensive
notes on the differences between OpenCV 3.x and OpenCV 2.x.
The author's website, http://nummist.com/opencv, offers
two sets of code bundles: one for OpenCV 3.x (tested with 3.0)
and another for OpenCV 2.x (tested with 2.4.9).

There are many possible ways to install and configure these components. We
will cover several common setup scenarios, but if you are interested in further
options, see OpenCV's official documentation at http://docs.opencv.org/doc/
tutorials/introduction/android_binary_package/O4A_SDK.html.

System requirements
All the development tools for Android and OpenCV are cross-platform. The following
operating systems are supported with almost identical setup procedures:

• Windows XP or a later version


• Mac OS 10.6 (Snow Leopard) or a later version
• Debian Wheezy or a later version, including derivatives such as Ubuntu
12.04 (Pangolin) or a later version
• Many other Unix-like systems (though not specifically covered in this book)

To run the OpenCV samples and, later on, our own application, we should have an
Android device with the following specifications:

• Android 2.2 (Froyo) or greater (required)


• Camera (required): front and rear cameras (recommended)
• Autofocus (recommended)

Android Virtual Devices (AVDs) are not recommended. Some parts of OpenCV rely
on low-level camera access and might fail with virtualized cameras.

[2]

www.it-ebooks.info
Chapter 1

Setting up a development environment


We are going to install various components of a development environment
separately and configure them to work together. Broadly, this task has the following
two stages:

1. Set up a general-purpose Android development environment.


2. Set up OpenCV for use in this environment. We may use a prepackaged,
preconfigured version of OpenCV, or alternatively, we may configure and
build OpenCV from source.

Let's start by looking at the setup steps for a general-purpose Android development
environment. We will not delve into very much detail here because good instructions
are available at the given links and, as an Android or Java developer, you have
probably been through similar steps before.

If you already have an Android development environment or


another Java development environment and you just want to
add components to it, some of the following steps might not
apply to you.

Here are the steps:

1. Download and install Oracle JDK 7 from http://www.oracle.com/


technetwork/java/javase/downloads/jdk7-downloads-1880260.html.
Alternatively, on Debian or Ubuntu, install Oracle JDK 7 from the WebUpd8
PPA, as described at https://launchpad.net/~webupd8team/+archive/
ubuntu/java. Although most Linux distributions have OpenJDK in their
standard repositories, Oracle JDK is recommended instead for Android
development.
2. Download Eclipse and unzip it to any destination, which we will refer to as
<eclipse>. Many up-to-date Eclipse distributions are available at http://
www.eclipse.org/downloads/. Of these, Eclipse IDE for Java Developers is
a good choice as a foundation for an Android development environment.
3. We now need to set up Android SDK and the ADT plugin for Eclipse. Go to
http://developer.android.com/sdk/index.html#Other and download
SDK Tools Only. Install or unzip it to any destination, which we will refer to
as <android_sdk>. Open Eclipse and install the ADT plugin according to the
official instructions at http://developer.android.com/sdk/installing/
installing-adt.html. Restart Eclipse. A window, Welcome to Android
Development, should appear. Click on Use Existing SDKs, browse to
<android_sdk>, and click on Next. Close Eclipse.

[3]

www.it-ebooks.info
Setting Up OpenCV

4. From the Eclipse menu system, navigate to Windows | Android SDK


Manager. Select and install additional SDK packages according to the official
instructions at https://developer.android.com/sdk/installing/adding-
packages.html. In particular, we will need the most recent versions of the
following packages: the latest Android API, such as Android 5.1.1 (API 22),
Android SDK Tools, Android SDK Platform-tools, Android SDK Build Tools,
and Android Support Library. After the packages are installed, close Eclipse.
5. If we are using Windows, download and install Cygwin from http://
cygwin.com/install.html.
6. Download Android NDK from http://developer.android.com/tools/
sdk/ndk/index.html. Unzip it to any destination, which we will refer to as
<android_ndk>.
7. Edit your system's Path (in Windows) or PATH (in Mac, Linux, or other Unix-
like systems) to include <android_sdk>/platform-tools, <android_sdk>/
tools, and <android_ndk>. Also, create an environment variable named
NDKROOT and set its value to <android_ndk>. (If you are unsure how to edit
Path, PATH or other environment variables, see the tips in the boxes on this
page and next page.)

Editing environment variables on Windows


The system's Path variable and other environment variables can be
edited in the Environment Variables window of the Control Panel.
On Windows Vista/7/8, open the Start menu and launch the Control
Panel. Now, go to System and Security | System | Advanced system
settings. Click on the Environment Variables button.
On Windows XP, open the Start menu and go to Control Panel
| System. Click on the Advanced tab. Click on the Environment
Variables button.
Now, under System variables, select an existing environment
variable, such as Path, and click on the Edit button. Alternatively,
make a new environment variable by clicking on the New button. Edit
the variable's name and value as needed. For example, if we want to
add C:\android-sdk\platform-tools and C:\android-sdk\
tools to Path, we should append ;C:\android-sdk\platform-
tools;C:\android-sdk\tools to the existing value of Path.
Note the use of semicolons as separators.
To apply the changes, click on all the OK buttons until we are back in
the main window of the Control Panel. Now, log out and log in again.

[4]

www.it-ebooks.info
Chapter 1

Editing environment variables on Mac


Edit ~/.profile.
To append to an existing environment variable in ~/.profile, add
a line such as export PATH=$PATH:~/android-sdk/platform-
tools:~/android-sdk/tools. This example appends ~/android-
sdk/platform-tools and ~/android-sdk/tools to PATH. Note
the use of colons as separators.
To create a new environment variable in ~/.profile, add a line such
as export NDKROOT=~/android-ndk.
Save your changes, log out, and log in again.
Editing environment variables on Linux
Edit either ~/.profile (as described previously for Mac) or ~/.pam_
environment (as described next). Note that ~/.profile and
~/.pam_environment use slightly different formats for variables.
To append to an existing environment variable in ~/.pam_
environment, add a line such as PATH DEFAULT=${PATH}:~/
android-sdk/platform-tools:~/android-sdk/tools. This
example appends ~/android-sdk/platform-tools and ~/
android-sdk/tools to PATH. Note the use of colons as separators.
To create a new environment variable in ~/.pam_environment., add
a line such as NDKROOT DEFAULT=~/android-ndk.
Save your changes, log out, and log in again.

Now we have an Android development environment, but we still need OpenCV.


We may choose to download a prebuilt version of OpenCV, or we may build it from
source. These options are discussed in the following two subsections.

Getting prebuilt OpenCV4Android


The prebuilt versions of OpenCV4Android can be downloaded from
http://sourceforge.net/projects/opencvlibrary/files/opencv-android/.
Look for files that have opencv-android in the name, such as OpenCV-3.0.0-
android-sdk.zip (the latest version at the time of writing). Download the latest
version and unzip it to any destination, which we will refer to as <opencv>.

[5]

www.it-ebooks.info
Setting Up OpenCV

Building OpenCV4Android from source


Alternatively, the process for building OpenCV4Android from trunk (the latest,
unstable source code) is documented at http://code.opencv.org/projects/
opencv/wiki/Building_OpenCV4Android_from_trunk. For a summary of the
process, continue reading this section. Otherwise, skip ahead to Building the OpenCV
samples with Eclipse, later in this chapter.

Since trunk contains the latest, unstable source code, there is no


guarantee that the build process will succeed. You may need to do
your own troubleshooting if you want to build from trunk.

To build OpenCV from source, we need the following additional software:

• Git: This is a Source Control Management (SCM) tool, which we will use
to obtain OpenCV's source code. On Windows or Mac, download and install
Git from http://git-scm.com/. On Linux, install it using your package
manager. For example, on Debian or Ubuntu, open Terminal and run $ sudo
apt-get install git-core.
• CMake: This is a set of build tools. On Windows or Mac, download and
install CMake from http://www.cmake.org/cmake/resources/software.
html. On Linux, install it using your package manager. For example, on
Debian or Ubuntu, open Terminal and run $ sudo apt-get install
cmake.
• Apache Ant 1.8.0 or greater: This is a set of build tools for Java. On Linux,
just install Ant using your package manager. For example, on Debian
or Ubuntu, open Terminal and run $ sudo apt-get install ant.
On Windows or Mac, download Ant from http://ant.apache.org/
bindownload.cgi and unzip it to any destination, which we will refer to as
<ant>. Make the following changes to your environment variables:
°° Add <ant>/bin to Path (Windows) or PATH (Unix).
°° Create a variable ANT_HOME with the value <ant>.

• Python 2.6 or greater (but not 3.0 or greater): This is a scripting language
that is used by some of the OpenCV build scripts. An appropriate version
of Python comes preinstalled on Mac and most Linux systems, including
Debian and Ubuntu. On Windows, download and install Python from
http://www.python.org/getit/. If you have installed multiple versions of
Python on your system, ensure that an installation of Python 2.6 or greater
(but not 3.0 or greater) is the only one in Path (Windows) or PATH (Unix).
The OpenCV build scripts do not run properly with Python 3.0 or greater.

[6]

www.it-ebooks.info
Chapter 1

Once we have these prerequisites, we can download the OpenCV source code to any
location, which we will refer to as <opencv_source>. Then, we can build it using an
included script. Specifically, we should take the following steps:

On Windows, open Git Bash (Git's command prompt). On Mac, Debian, Ubuntu, or
other Unix-like systems, open Terminal (or another command-line shell).

Run these commands:


$ git clone git://code.opencv.org/opencv.git <opencv_source>
$ cd <opencv_source>/platforms
$ sh ./scripts/cmake_android_arm.sh
$ cd build_android_arm
$ make -j8

The –j8 flag specifies that the make command will use 8 threads, which is typically
a good number for a quad-core processor. For a dual-core processor, a better choice
might be the –j4 flag (4 threads).

If all goes well, we should get a build of OpenCV4Android in <opencv_source>/


platforms/build_android_arm. We can move it elsewhere if we wish. We will
refer to its final location as <opencv>.

You might wonder what the cmake_android_arm.sh build script is doing. Actually,
it just creates a build directory and runs a CMake command to populate the directory
with a particular configuration of OpenCV. Here are the entire contents of the script
file:
#!/bin/sh
cd `dirname $0`/..

mkdir -p build_android_arm
cd build_android_arm

cmake -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON -
DCMAKE_TOOLCHAIN_FILE=../android/android.toolchain.cmake $@ ../..

Advanced users, who are familiar with CMake, might want to copy and modify this
script to create a custom configuration of OpenCV. Refer to the code in <opencv_
source>/CMakeLists.txt for definitions of OpenCV's CMake options.

[7]

www.it-ebooks.info
Setting Up OpenCV

The preceding steps use the cmake_android_arm.sh script


to produce an OpenCV4Android build for ARM, which is the
architecture of most Android phones and tablets. Alternatively, you
can use the cmake_android_x86.sh script for x86 or the cmake_
android_mips.sh script for MIPS. Note that the name of the build
directory also changes according to the architecture.

Building the OpenCV samples with


Eclipse
Building and running a few sample applications is a good way to test that
OpenCV is correctly set up. At the same time, we can practice using Eclipse.

Let's start by launching Eclipse. The Eclipse launcher should be located at


<eclipse>/eclipse.exe (Windows), <eclipse>/Eclipse.app (Mac), or
<eclipse>/eclipse (Linux). Run it.

We should see a window called Workspace Launcher, which asks us to select a


workspace. A workspace is the root directory for a set of related Eclipse projects.
Enter any location you choose.

We can return to Workspace Launcher anytime via the menu:


File | Switch Workspace | Other….

[8]

www.it-ebooks.info
Chapter 1

If the Welcome to Eclipse screen appears, click on the Workbench button:

Now, we should see a window with several panels, including Package Explorer.
If we are not using TAPD, we need to import the OpenCV sample projects into
our new workspace. Right-click on Package Explorer and select Import… from
the context menu:

[9]

www.it-ebooks.info
Setting Up OpenCV

The Import window should appear. Navigate to General | Existing Projects into
Workspace, and then click on Next >:

On the second page of the Import window enter <opencv> in the Select root
directory: field. Under the Projects: label, a list of detected projects should appear.
(If not, click on Refresh.) The list should include the OpenCV library, samples, and
tutorials. They should all be selected by default.

Downloading the example code


You can download the example code files from your account
at http://www.packtpub.com for all the Packt Publishing
books you purchased. If you purchased this book elsewhere,
you can visit http://www.packtpub.com/support and
register to have the files e-mailed directly to you.

[ 10 ]

www.it-ebooks.info
Chapter 1

This means that Eclipse has found the OpenCV library, samples, and tutorials and
has recognized them as Eclipse projects. Do not select Copy projects into workspace
because the OpenCV sample and tutorial projects rely on a relative path to the
library project, and this relative path will not be preserved if the projects are copied
into the workspace. Click on Finish to import the projects:

[ 11 ]

www.it-ebooks.info
Setting Up OpenCV

Once the projects are imported, we might need to fix some configuration issues.
Our development environment might have different paths and different versions
of Android SDK than the ones in the samples' default configuration:

Any resulting errors will be reported in the Problems tab. For likely solutions,
see the section Troubleshooting Eclipse projects, later in this chapter.

We should first resolve any errors in the OpenCV Library


project as the samples and tutorials depend on the library.

Once the OpenCV projects no longer show any errors, we can prepare to test them
on an Android device. Recall that the device must have Android 2.2 (Froyo) or greater
and a camera. To let Eclipse communicate with the device, we must enable the device's
USB debugging option. On the Android device, perform the following steps:

[ 12 ]

www.it-ebooks.info
Chapter 1

1. Open the Settings app.


2. On Android 4.2 or greater, go to the About phone or About tablet
section and tap Build number seven times. This step enables the
Developer options section.
3. Go to the Developer options section (on Android 4.0 or greater)
or the Applications | Development section (on Android 3.2 or less).
Enable the USB debugging option.

Now, we need to install an Android app called OpenCV Manager 3, which takes care
of checking for OpenCV library updates when we run any OpenCV application. At the
time of writing, OpenCV Manager 3 is not yet available from the Play Store. However,
in the <opencv>/apk folder of our development environment, we can find prebuilt
application bundles (.apk files) for various architectures. Choose an .apk file whose
name matches your Android device's architecture. At the time of writing, ARMv7-A
is a popular architecture for Android devices. For this architecture, OpenCV 3.0 offers
the OpenCV_3.0.0_Manager_3.00_a.apk file. Open a command prompt and enter
a command, such as the following, to install the appropriate .apk to your Android
device via USB:
$ adb install <opencv>/apk/OpenCV_3.0.0_Manager_3.00_armeabi-v7a.apk

If the installation succeeds, the terminal should print Success.

Supporting OpenCV 2.x applications


At the time of writing, the Play Store contains an older version of
OpenCV Manager that supports OpenCV 2.x only. If you want to
run both OpenCV 2.x and OpenCV 3.x applications, you can install
this older version from the Play Store alongside OpenCV Manager 3.
They do not conflict.

[ 13 ]

www.it-ebooks.info
Setting Up OpenCV

Plug the Android device into your computer's USB port. In Eclipse, select one of the
OpenCV sample projects in Package Explorer. Then, from the menu system, navigate
to Run | Run as… | Android Application:

An Android Device Chooser window should appear. Your Android device should
be listed under Choose a running Android device. If the device is not listed, refer to
the section Troubleshooting the USB connection, later in this chapter.

[ 14 ]

www.it-ebooks.info
Chapter 1

Select the device and click on OK:

If the Auto Monitor Logcat window appears, select the Yes radio button and the
verbose drop-down option, and click on OK. This option ensures that all the log
output from the application will be visible in Eclipse:

[ 15 ]

www.it-ebooks.info
Setting Up OpenCV

On the Android device, you might get a message: OpenCV library package was
not found! Try to install it? Make sure that the device is connected to the Internet
and then touch the Yes button on your device. The Play Store will open to show an
OpenCV package. Install the package and then press the hardware back button to
return to the sample application, which should be ready for use.

For OpenCV 3.0, the samples and tutorials have the following functionality:

• Sample–15 puzzle: This splits up a camera feed to make a sliding-block


puzzle. The user can swipe blocks to move them.
• Sample–color-blob-detection: This detects color regions in a camera feed.
The user can touch anywhere to see the outline of a color region.
• Sample–face-detection: This draws green rectangles around faces in a
camera feed.
• Sample–image-manipulations: This applies filters to a camera feed. The
user can press the Android menu button to select from a list of filters. For
example, one filter draws a color histogram (a bar chart of colors that are
present in the image), as seen at the bottom of the following screenshot:

• Sample – native-activity: This displays a camera feed using native (C++) code.

[ 16 ]

www.it-ebooks.info
Chapter 1

• Tutorial 1 – Camera Preview: This displays a camera feed. The user can
press the … menu to select a different camera feed implementation (Java or
native C++).
• Tutorial 2 – Mixed Processing: This applies filters to a camera feed using
native (C++) code. The user can press the … menu to select from a list of
filters. One of the filters draws red circles around interest points or features
in a camera feed. Generally speaking, interest points or features lie along
the high-contrast edges in an image. They are potentially useful in image
recognition and tracking applications, as we will see later in this book.
• Tutorial 3 – Camera Control: This applies filters to a camera feed, which has
a customizable resolution. The user can press the … menu to select from a list
of filters and a list of resolutions.

Try these applications on your Android device! While an application is running,


its log output should appear in the LogCat tab in Eclipse:

[ 17 ]

www.it-ebooks.info
Setting Up OpenCV

Feel free to browse the projects' source code via Package Explorer to see how they
were made. Alternatively, you might want to return to the official samples and
tutorials later, once we have built our own application over the course of this book.

Troubleshooting Eclipse projects


This section is not about troubleshooting Java code. Rather, it addresses a few
common problems with the configuration and build process of Eclipse projects.
You might encounter these problems when working with the OpenCV library,
OpenCV sample projects, other imported projects, or even your own new projects.

Sometimes, Eclipse fails to recognize that a project needs to be rebuilt after the
project or one of its dependencies has changed (or after a dependency has been
imported). When in doubt, try cleaning all the projects by navigating to Project |
Clean… | Clean all projects | OK in the menu system. This will force Eclipse
to rebuild everything, thus ensuring that all errors, warnings, and successes are
up-to-date.

If a set of cleaned projects still has mysterious errors, then a configuration problem
might be the cause.

The target Android version might not be properly specified. The symptoms are that
imports from the java and android packages fail, and there are error messages such
as The project was not built since its build path is incomplete. The solution is to
right-click on the project in Package Explorer, select Properties from the context
menu, select the Android section, and checkmark one of the available Android
versions. These steps should be repeated for all the projects.

[ 18 ]

www.it-ebooks.info
Chapter 1

At compile time, OpenCV and its samples must target Android 3.0 (API level 11) or
greater, though at runtime they also support Android 2.2 (API level 8) or greater:

[ 19 ]

www.it-ebooks.info
Setting Up OpenCV

If imported on Mac or Linux, the OpenCV C++ samples might be misconfigured


to use the Windows build executable. The symptom is an error message such as
Program "/ndk-build.cmd" not found in PATH. The solution is to right-click on
the project in Package Explorer, select Properties from the context menu, select
the C/C++ Build section, and edit the Build command: field to remove the .cmd
extension. These steps should be repeated for all the native (C++) projects, which
include OpenCV Sample – face-detection and OpenCV Tutorial 2 - Mixed
Processing:

If we are still getting an error message such as Program "/ndk-build.cmd" not


found in PATH, we can conclude that Eclipse is not recognizing the NDKROOT
environment variable. As an alternative to relying on an environment variable, we
can add NDKROOT as an Eclipse build variable to Eclipse | Preferences | C/C++ |
Build | Build Variables. (These preferences are shared across Eclipse projects.)
As the variable's type, select String, and as its value, enter your NDK path (to which
we previously referred as <android_ndk>):

[ 20 ]

www.it-ebooks.info
Chapter 1

Troubleshooting the USB connection


If your Android device does not appear in Eclipse's Android Device Chooser window
or if your adb commands fail in the command prompt, the USB connection might be
at fault. Specifically, USB communication with the Android device is controlled via
a tool called Android Debug Bridge (ADB), and this tool (or some other component
of the connection) might not be working as expected. Try the possible solutions in
this section.

To verify whether a USB connection is working, run the following


command in a command prompt:
$ adb devices
If the connection is working, the terminal should print the serial
number and name of your connected Android device, such as
019d86b921300c7c device

[ 21 ]

www.it-ebooks.info
Setting Up OpenCV

Many connection problems are intermittent and can be resolved by restoring the
USB connection to an initial state. Try the following steps and, after each step,
test whether the problem is resolved:

1. Unplug the Android device from the host computer's USB port.
Then, plug it back in.
2. Disable and re-enable the device's USB debugging option, as described
earlier in the section Building the OpenCV samples with Eclipse.
3. On Mac or Linux, run the following command in Terminal (or another
command prompt):
sudo sh -c "adb kill-server && start-server"

Less commonly, connection problems might relate to drivers or permissions. A one-


time setup process, as described next, should resolve such problems.

On Windows, we might need to manually install the USB drivers for the Android
device. Different vendors and devices have different drivers. The official Android
documentation provides links to the various vendors' driver download sites at
http://developer.android.com/tools/extras/oem-usb.html#Drivers.

On Linux, before connecting an Android device via USB, we might need to specify
the device's vendor in a permissions file. Each vendor has a unique ID number, as
listed in the official Android documentation at http://developer.android.com/
tools/device.html#VendorIds. We will refer to this ID number as <vendor_
id>. To create the permissions file, open a command prompt application (such as
Terminal) and run the following commands:
$ cd /etc/udev/rules.d/
$ sudo touch 51-android.rules
$ sudo chmod a+r 51-android-rules

Note that the permissions file needs to have root ownership, so we use sudo while
creating or modifying it. Now, open the file in an editor such as gedit:
$ sudo gedit 51-android-rules

For each vendor, append a new line to the file. Each of these lines should have the
following format:
SUBSYSTEM=="usb", ATTR{idVendor}=="<vendor_id>", MODE="0666",
GROUP="plugdev"

Save the permissions file and quit the editor. Reboot.

On Mac, no special drivers or permissions are required.

[ 22 ]

www.it-ebooks.info
Chapter 1

Finding the documentation and help


The OpenCV Java API and C++ API are both relevant to Android. The Java API
documentation is online at http://docs.opencv.org/java/, and an index
of OpenCV4Android resources is online at http://opencv.org/platforms/
android.html. The C++ API documentation is online at http://docs.opencv.
org/. The following documents, which mostly use C++ code, are also available as
downloadable PDF files:

• API reference: http://docs.opencv.org/opencv2refman.pdf


• Tutorials: http://docs.opencv.org/opencv_tutorials.pdf
• User guide (incomplete): http://docs.opencv.org/opencv_user.pdf

If the documentation does not seem to answer your question, try talking to the
OpenCV community. Here are some sites where you will find helpful people:

• Official OpenCV forum: http://www.answers.opencv.org/questions/


• Jay Rambhia's blog: http://jayrambhia.wordpress.com/
• The support site for my OpenCV books: http://nummist.com/opencv/

Also, you can read or submit bug reports at http://code.opencv.org/projects/


opencv/issues?query_id=4. Finally, if you need to take your issue to the highest
authority, you can e-mail the OpenCV4Android developers at [email protected].

Summary
By now, we should have an Android and OpenCV development environment that
can do everything we need for the application described in this book's remaining
chapters. Depending on the approach we took, we might also have a set of tools
that we can use to reconfigure and rebuild OpenCV for our future needs.

We know how to build the OpenCV Android samples in Eclipse. These samples
cover a different range of functionality to this book's project, but they are useful as
additional learning aids. We also know where to find the documentation and help.

Now that we have the necessary tools and reference materials to hand, our first
ambition as application developers is to control a camera! Throughout the next
chapter, we will use Android SDK and OpenCV to preview, capture, and share
photographs.

[ 23 ]

www.it-ebooks.info
www.it-ebooks.info
Working with Camera Frames
In this chapter, we will focus on building a basic photo capture app, which uses
OpenCV to capture the frames of camera input. Our app will enable the user to
preview, save, edit, and share photos. It will interface with the other apps on the
device, via Android's MediaStore and Intent classes. Thus, we will learn how
to build bridges between OpenCV and standard Android. In subsequent chapters,
we will expand our app, using more functionality from OpenCV.

The complete Eclipse project for this chapter can be downloaded


from the author's website. The project has two versions:
A version for OpenCV 3.x is located at http://nummist.com/
opencv/4598_02.zip.
A version for OpenCV 2.x is located at http://nummist.com/
opencv/5206_02.zip.

Designing our app – Second Sight


Let's make an app that enables people to see new visual patterns, animate and
interact with these patterns, and share them as pictures. The idea is simple and
versatile. Anyone, from a child to a computer vision expert, can appreciate the
visual patterns. Through the magic of computer vision on a mobile device, any
user can more readily see, change, and share hidden patterns in any scene.

For this app, I chose the name Second Sight, a phrase that is sometimes used in
mythology to refer to supernatural and symbolic visions.

[ 25 ]

www.it-ebooks.info
Working with Camera Frames

At its core, Second Sight is a camera app. It will enable the user to preview, save, and
share photos. Like many other camera apps, it will also let the user apply filters to
the previewed and saved photos. However, many of the filters will not be traditional
photographic effects. For example, the more complex filters will enable the user to see
the stylized edges or even rendered objects that blend with the real scene (augmented
reality).

For this chapter, we will build the basic camera and sharing functions of Second
Sight, without any filters. Our first version of the app will contain two activity classes
named CameraActivity and LabActivity. The CameraActivity class will show the
preview and provide menu actions so that the user may select a camera (if the device
has multiple cameras), an image size (under the … section of the menu, if the camera
supports multiple image sizes), and take a photo. Then, the LabActivity class will
open to show the saved photo and provide the menu actions so that the user may
delete the photo or send it to another app for editing or sharing.

To get a better sense of our goal, let's look at some screenshots. Our first version of
CameraActivity will appear as follows:

[ 26 ]

www.it-ebooks.info
Chapter 2

When the user clicks on the Take Photo menu item, the LabActivity class will be
opened. It will look like the following screenshot:

When the user presses the Share menu item, an intent chooser (a dialog for choosing a
destination app) will appear over the top of the photo, as in the following screenshot:

For example, by pressing the Google+ tile, the user could open the photo in the
Google+ app, in order to share it over the social network. Thus, we have a complete
example of typical usage. With a few touch interactions, the user can snap a photo
and share it.

[ 27 ]

www.it-ebooks.info
Working with Camera Frames

Creating the Eclipse project


We need to create a new Eclipse project for our app. We may do this in the same
workspace that we already used for the OpenCV library project and samples.
Alternatively, if we use another workspace, we must import the OpenCV library
project into this workspace too. (For instructions on setting the workspace and
importing the library project, see the Building the OpenCV samples with Eclipse
section of Chapter 1, Setting Up OpenCV.)

Open Eclipse in a workspace that contains the library project. Then, from the menu
system, navigate to File | New | Android Application Project. The New Android
Application window should appear. Enter the options that are shown in the
following screenshot:

[ 28 ]

www.it-ebooks.info
Other documents randomly have
different content
hehkuvin harrastuksin sotatapahtumia, olimme ilosta sykkivin
sydämin katselemassa, kun valloitetut tykit tuotiin ja sotajoukot
marssivat kaupunkiin ja luulimme olevamme oikeutettuja tuntemaan,
että meissä asui samaa henkeä, joka Tanskan taistelutantereilla oli
joukoillemme tuottanut menestyksen. Oliko ihme, että sitten tuskin
maltoimme odottaa sitä päivää, jona itse pääsisimme armeijan
riveihin?

Ennenkuin tämä tapahtui, tuli vielä osaksemme se kunnia ja onni,


että meidät esitettiin henkilökohtaisesti kuninkaallemme. Meidät
vietiin sitä varten linnaan, jossa meidän tuli Hänen Majesteetilleen
lausua isämme nimi ja sääty. Oliko ihme, ettei moni
kiihtymyksessään ensin saanut sanaakaan suustaan ja sitten sotki
kaikki sekaisin. Emmehän vielä milloinkaan olleet olleet niin lähellä
iäkästä hallitsijaamme, emme vielä milloinkaan katsoneet häntä niin
suoraan hänen hyväntahtoisiin silmiinsä emmekä kuulleet hänen
ääntään. Kuningas puhui meille vakavia sanoja. Hän kehoitti meitä
raskainakin hetkinä täyttämään velvollisuutemme. Pian olikin meille
tuleva tilaisuus osoittaa sitä työssä. Moni meistä on kuolemalla
vahvistanut uskollisuutensa.

Keväällä 1866 pääsin kadettikoulusta. Aina olen sitten omain


kokemusteni ja taipumusteni perustuksella pysynyt tämän
sotilaallisen kasvatuslaitoksen kiitollisena ja uskollisena ystävänä.
Aina tuottivat minulle iloa toivorikkaat nuoret toverini, joilla oli
kuninkaan takki yllään. Maailmansodankin aikana käytin mielelläni
tilaisuutta nähdäkseni luonani vieraina apulaisteni, tuttavaini tai
kaatuneiden toverieni poikia. Ja suotuisain asianhaarain johdosta
saatoin aloittaa sodan ajaksi sattuneen 70-vuotissyntymäpäiväni
vieton sillä, että Kreuznachissa otin kadulta mukaani kolme pientä
kadettia aamiaispöytääni, johon oli kokoontunut runsaasti maukkaita
antimia. He astuivat eteeni semmoisina, jommoisena nuorisoa
rakastan, reippaina ja vapaina, ruumiillistuneina kuvina ammoin
olleista ajoista, muistoina omista elämyksistäni.
PREUSSIN JA SAKSAN
SUURUUSTAISTELUSSA.

Huhtikuun 7:ntenä 1866 pääsin aliluutnanttina kaartin kolmanteen


jalkaväkirykmenttiin. Rykmentti kuului niihin joukko-osastoihin, jotka
oli uudestaan muodostettu vakinaisten joukkojen suuressa
lisäyksessä 1859/60. Nuori rykmentti oli, minun siihen tullessa, jo
1864-vuoden sodassa saavuttanut laakereita. Joukko-osaston
kunniahistoria punoo yhdistävän siteen kaikkien siihen kuuluvain
ympärille, se on sideaine, joka kestää sodan raskaimmissakin
koetteluissa. Tässä on jotain, jota on mahdoton hävittää ja joka
vaikuttaa edelleen silloinkin, kun rykmenttejä täytyy moneen kertaan
aivan uudestaan muodostaa, kuten äskeisessä suuressa sodassa.
Ennestään jääneet vanhan hengen tähteet valtasivat lyhyessä ajassa
uudetkin osat.

Rykmentissäni, joka oli saanut alkunsa kaartin ensimmäisestä


jalkaväkirykmentistä, tapasin hyvän vanhan potsdamilaisen
kouluutuksen ja hengen, joka oli Preussin silloisen armeijan
parhaiden perintöjen mukainen. Preussin upseerikunta ei siihen
aikaan ollut onnen lahjojen miekkonen, ja se oli hyvä. Sen
rikkautena olivat vähät vaatimukset. Tieto siitä, että se oli
kuninkaaseensa erikoisessa henkilökohtaisessa suhteessa —
vasalliuskollisuus, kuten eräs saksalainen historiankirjoittaja on
lausunut — täytti upseerien elämän ja korvasi heille monenkin
aineellisen puutteen. Tämä ihanteellinen käsitys oli armeijalle
arvaamaton etu. Sana "ich dien'" sai siitä aivan erikoisen kaiun.

Yleisesti väitettiin, että tämä käsitys oli erottanut upseerit muista


virkamiesluokista. En ole koskaan tavannut tätä yksipuolisuutta
upseeristossa suuremmassa määrässä kuin missä muussa säädyssä
tahansa, joka pitää kiinni arvostaan ja sen vuoksi viihtyy parhaiten
kaltaistensa seurassa. Pääpiirteissään oikean kuvan Preussin
upseerikunnassa siihen aikaan vallitsevasta hengestä saamme
eräästä sotaministeri Roonia koskevasta tutkimuksesta. Sen ajan
upseerikuntaa nimitetään siinä ylimykselliseksi virkasäädyksi, joka
tosin on lujasti ja voimakkaasti itseensä sulkeutunut, mutta ei silti
suinkaan piintynyt tai yleisestä elämästä vieraantunut eikä suinkaan
vailla vapaamielisiä aineksia; sitä sanotaan ammattimiesmäisen
koruttomaksi, mutta myös ammattimiesmäisen rikkaaksi. Laajan
ihmisyyden vanhaa ihannetta vastaan on siinä muka noussut jyrkän
ammattikasvatuksen ihanne. Innokkaimmat edustajansa se on muka
saanut Preussin vanhoista monarkistis-konservativisista kerroksista.
Sitä on elähyttänyt valtiomahdin luja tunne, fredrikiläinen henki, joka
halusi Preussille sen armeijan avulla maailmassa uusia tehtäviä.

Saapuessani rykmenttiini Danzigiin, jonne se silloin oli sijoitettuna,


loivat seuraavain kuukausien valtiolliset tapaukset jo edellään
varjoansa. Tosin ei liikekannallepanosta Itävaltaa vastaan vielä ollut
annettu määräystä, mutta käsky lisätä miehistöjen lukua oli jo
annettu ja sitä pantiin kaikkialla toimeen.
Preussin ja Itävallan väliseen ratkaisevaan taisteluun nähden, joka
nyt lähestyi, liikkuivat valtiolliset ja sotilaalliset ajatuksenjuoksumme
täydelleen Fredrik Suuren ratoja. Sen johdosta veimmekin
Potsdamissa, johon rykmentti sijoitettiin, kun sen liikekannallepano
oli loppuun suoritettu, krenatöörimme tämän unohtumattoman
hallitsijan arkun luo. Armeijamme päiväkäskyssäkin ennen Böömiin
marssiamme oli nämä ajatukset loppulauseessa seuraavin sanoin
julkilausuttu: "Sotamiehet, luottakaa voimaanne ja muistakaa, että
meidän on voitettava sama vihollinen, jonka aikoinaan suurin
kuninkaamme voitti pienellä armeijalla."

Valtiolliselta kannalta katsoen pidimme vallan ratkaisua Itävallan ja


meidän välillämme välttämättömänä, molemmille suurvalloille kun ei
rinnakkain ollut sikäläisessä liittosuhteessa vapaan toiminnan
mahdollisuutta. Toisen kahdesta täytyi väistyä, ja kun siihen ei voitu
päästä valtiollisilla sopimuksilla, täytyi aseitten puhua. Tämän
käsityskannan ohella ei meidän keskuudessamme puhuttu mistään
kansallisesta vihamielisyydestä Itävaltaa vastaan. Heimolaisuuden
tunne Tonavan keisarikunnan saksalaisten ainesten kanssa, joilla
silloin vielä oli määräävä valta, oli liian voimallisesti kehittynyt
suodakseen sijaa vihamielisille tunteille. Sodassa tämä tulikin
monella tavalla näkyviin. Meidän puolellamme vankeja enimmäkseen
kohdeltiin kuin omia maanmiehiä, joiden kanssa taistelun päätyttyä
mielellään jälleen elettiin rauhassa. Vihollismaan asukkaat, jopa
suurin osa tshekkiläisestäkin väestöstä, osoittivat meille
enimmäkseen niin suurta myötämielisyyttä, että majapaikoissa olo ja
elämä muodostui samanlaiseksi kuin saksalaisissa harjoitusleireissä.

Me emme tässä sodassa kulkeneet fredrikiläisiä uria ainoastaan


ajatuksissamme, vaan myös todellisuudessa. Kaartin armeijaosasto
esim. marssi Schlesiasta Böömiin Braunaun kohdalla paljon
käytettyjä sotateitä. Ja ensimmäisessä tappelussa, joka taisteltiin
Soorin luona, etenimme kesäk. 28:ntena vihollista vastaan samojen
seutujen kautta ja samassa suunnassa Eipelistä Burkersdorfia kohti,
missä aikoinaan, syyskuun 30:ntenä 1747, silloisessa Soorin
tappelussa Preussin kaarti marssi keskellä suuren kuninkaan
armeijaa, joka eteni viivataktiikan jäykissä muodoissa.

2:sella pataljoonallamme, jonka 5:nnessä komppaniassa minä


johdin silloisen ohjesäännön mukaan kolmannesta rivistä
muodostettua 1:stä ampujaosastoa, ei mainittuna päivänä juuri ollut
tilaisuutta hyökätä eturintamassa, koska me kuuluimme reserviin,
joka ajan taktillisten käsitysten mukaan oli jo ennen taistelua varalle
erotettu. Siitä huolimatta saimme kuitenkin edes tilaisuuden
Burkersdorfin luoteispuolella olevassa metsässä vaihtaa laukauksia
itävaltalaisen jalkaväen kanssa ja ottaa vankeja ynnä myöhemmin
tulellamme karkoittaa kahden eskadroonan verran vihollisen
ulaaneja, jotka pahaa aavistamatta oleskelivat eräässä notkossa, ja
anastaa heidän ajoneuvonsa. Viimemainituissa oli muun muassa
rykmentin kassa, joka lähetettiin pois, paljon leipiä, jotka
krenatöörimme painetteihinsa pistettyinä toivat Burkersdorfiin
leiritulille, ja sotapäiväkirja, joka oli kirjoitettu samaan vihkoon kuin
Italian sotaretkellä v. 1859 laadittu päiväkirja. Noin 12 vuotta
takaperin tutustuin vanhanpuoleiseen mecklenburgilaiseen
herrasmieheen, joka silloin oli luutnanttina palvellut Itävallan
armeijassa eräässä näistä ulaanieskadroonista. Hän tunnusti minulle
tässä tilaisuudessa menettäneensä uuden ulankansa, joka hänen oli
määrä panna ylleen Berliiniin marssiessaan.

Kun en saanut Soorin luona tämän enempää kokea, täytyi minun


tyytyä siihen, että edes olin ruutia haistanut ja elänyt osan niistä
sielullisista mielialoista, jotka valtaavat joukon sen ensi
kosketuksessa vastustajan kanssa.

Taisteluinnostukseni vastapainoksi sain seuraavana päivänä tehdä


tuttavuutta niin sanoakseni mitalin nurjan puolen kanssa. Surullinen
velvollisuuteni oli 60 krenatöörin kanssa etsiä taistelutantereelta
kuolleita ja haudata ne. Se oli vakavaa työtä, jota lisäksi vaikeutti se
että vilja oli vielä leikkaamatta. Viertotien ojissa tuon tuostakin
juosten riensin sitten miehineni muiden joukko-osastojen sivu ja
saavutin siten hädin tuskin pataljoonani, joka jo muun divisionan
keralla jatkoi marssia etelää kohti. Ennätin parhaiksi näkemään, kun
etujoukkomme rynnäköllä Königinhofin luona valloitti Elben
ylimenopaikan.

Kesäkuun 30 päivä toi minulle sodan pikkuhommain arkipäiväisen


todellisuuden. Minun tuli heikon saattojoukon keralla yöllä marssien
kuljettaa Trautenauhun kolmisenkymmentä vaunullista vankeja,
ottaa sieltä tyhjiksi joutuneihin vaunuihin muonaa ja tämän keralla
palata takaisin Königinhofiin. Vasta heinäkuun 2:sen aamulla saatoin
jälleen liittyä komppaniaani. Olikin jo täpärällä aika, sillä jo
seuraavana päivänä oli meidän oltava Königgrätzin taistelukentällä.

Käytyäni seuraavana yönä osastoni keralla vartioretkellä


Josephstadtin linnoituksen puolessa, majailimme heinäk. 3:nnen
aamuna Königinhofin eteläisen tiensuun seuduilla tuskin mitään
aavistaen kostean kylmässä etuvartio-leirissä. Silloin kaikui
hälyytyssignaali ja pian sen jälkeen tuli käsky keittää kiireesti kahvia
ja sitten olla valmiina marssimaan. Tarkkaavaiset kuuntelijat
saattoivat piankin eroittaa lounaasta päin ankaraa tykkitulta. Oltiin
eri mieltä tämän taistelun jymyn syistä. Yleensä kallistuttiin siihen
luuloon, että Lausitzista Böömiin tunkeutunut prinssi Fredrik Kaarlen
1:nen armeija — me kuuluimme kruununprinssin 2:seen — oli
jossain kohdannut yksinäisen itävaltalaisen joukko-osaston.

Etenemiskäskyä tervehdittiin riemulla. Herättihän se loistava


menestys, jota vasemmalla puolellamme edennyt V armeijanosasto
kenraali von Steinmetzin johdolla jo oli saavuttanut, kaartilaisessa
kipeää kateutta. Roiskuvassa sateessa, sään koleudesta huolimatta
hikipäissämme kahlasimme vaivalloisesti pitkiksi venyneissä
kolonneissa pohjattomia teitä eteenpäin. Kiihkeä into oli vallannut
mielet ja yltyi minussa huoleksi, että ehkä tulisimme liian myöhään.

Tämä pelko osottautui piankin turhaksi. Kun olimme nousseet


Elben laaksosta, alkoi tykkien jyrinä kuulua yhä selvempään. Ja kello
11:n aikaan näimme jonkun korkeamman esikunnan, joka oli
hevostensa selässä mäellä tiemme vieressä ja huolellisesti
kiikareillaan tähyili etelää kohti. Se oli 2:sen armeijan ylikomento,
päällikkönä kruununprinssimme, josta sittemmin tuli keisari Fredrik.
Hänen silloinen yleisesikuntapäällikkönsä, kenraali von Blumenthal,
kertoi minulle vuosien kuluttua tästä hetkestä seuraavaa:

"Juuri kun 1:nen kaartin divisiona tutkimattomilla teillä kulki


ohitsemme, pyysin kruununprinssiä ojentamaan minulle kätensä.
Kun hän tämän johdosta loi minuun kysyvän katseen, lisäsin minä
tahtovani onnitella häntä siitä, että taistelu oli voitettu.
Itävaltalaisten tykkituli suuntautui kaikkialla länttä kohti, mikä todisti,
että 1:nen armeija koko linjalla sitoi vihollisen, joten me nyt
pääsimme ahdistamaan sitä sivulta ja osaksi takaakin päin. Tähän
tilanteeseen nähden ei tarvinnut muuta kuin käskeä kaartin
armeijaosaston edetä erään, sumusta huolimatta kauas näkyvän
kukkulan oikeanpuolitse, VI:n armeijaosaston sen
vasemmanpuolitse, kun taas I:n ja V:n armeijaosaston, jotka vielä
olivat tulossa taistelukentälle, tuli tätä armeijaosastoa seurata.
Kukkula, jonka laella oli kaksi mahtavaa lehmusta, oli Horenowesin
luona. Siinä melkein kaikki, mitä kruununprinssin tarvitsi koko
päivänä käskeä."

Jatkoimme liikettämme vielä aluksi poikittaissuuntaan, sitten


suoritimme rintamaansijoituksen ja pian lähetettiin Horenowesin
luona olevilta kukkuloilta vastaamme ensimmäiset granaatit.
Itävaltalainen tykistö osoitti olevansa hyvän vanhan maineensa
tasalla. Eräs ensimmäisistä ammuksista haavoitti komppaniani
komentajan, toinen kaatoi heti takaani sivusta-aliupseerini ja pian
iski granaattikin keskelle kolonniamme ja siirsi 25 miestä
taisteluriveistä. Mutta kun sitten tuli vaikeni ja kukkulat taistelutta
joutuivat meille, koska tämä oli vain yllätyksen johdosta ajan
voittamiseksi heikosti miehitetty vihollisen ulkoasema, niin pääsi
pettymyksen tunne vallalle. Ei tosin pitkäksikään aikaa, sillä pian
meille avautui näköala suureen osaan valtavaa taistelukenttää.
Edessäpäin, viistoon oikealla kädellä, kohosi usvaiseen ilmaan
sankkoja savupilviä meidän 1:sen ja Bistritzin luona olevan
vihollisarmeijan tuliasemilta. Salamoiva tykkituli ja palavain kyläin
hehku antoi kuvalle omituisen vakavan värityksen. Sakeneva sumu,
korkea vilja ja pinnanmuodostus vaikuttivat, että vihollisen oli vaikea
huomata liikkeitämme. Huomattavan vähäinen oli sen vuoksi
vihollisten patterien tuli, niiden nyt pian ammuskellessa meitä
etelästä käsin voimatta meitä seisauttaa. Myöhemmin ne
enimmäkseen urhean puolustuksen jälkeen valloitettiin. Siten
tunkeuduimme eteenpäin niin nopeasti kuin pinnanmuodostus,
raskas, syvä ja livettävä multa, vilja, rapsi ja sokerijuurikkaat sallivat.
Hyökkäyksemme oli suunniteltu silloisen sotataidon kaikkien
sääntöjen mukaisesti, mutta kävi pian hajanaiseksi. Komppaniat,
jopa niiden osastotkin alkoivat omin päin etsiä vihollista; kaikki
tunkeutuivat eteenpäin. Kaikkia yhdisti vain sama tahto: eteenpäin
vihollisen kimppuun!

Chlumin ja Nedelistin välillä kohtasi puolipataljoonamme — tämä


oli siihen aikaan sangen suosittu taisteluryhmittymä — sumussa ja
viljassa äkkiarvaamatta etelästä etenevää vihollisen jalkaväkeä.
Neulasytytinkiväärin etevämmyys piankin pakotti sen väistymään.
Seuratessani sitä jääkäriosastoni keralla hajajärjestyksessä kohtasin
äkkiä itävaltalaisen patterin, joka mistään välittämättä rohkeasti kiiti
paikalle, käänsi tykkinsä ja nakkasi vastaamme kartessikuuron.
Luodista, joka lävisti kypärini ja hipaisi päätäni, lyyhistyin vähäksi
aikaa tunnottomaksi. Kun jälleen toinnuin, tunkeuduimme jo
patteriin. Viisi tykkiä saimme, kolme muuta pääsi pakoon. Tunsin
itseni ylpeäksi, kun syvään hengähtäen, vähäinen päänhaava verta
vuotaen, seisoin valloittamieni tykkien keskellä. Mutta minulla ei ollut
aikaa levätä laakereillani. Vehnän sekaan ilmestyi vihollisia
jääkäreitä, jotka tunsimme hatuissa olevista kukonsulista. Torjuin ne
takaisin ja seurasin niitä erääseen solatiehen saakka.

Sattuman johdosta tuli tämä ensimmäinen taistelukokemukseni


kuluneen suuren sodan kuluessa Itävallassa tunnetuksi. Virasta
eronnut entinen upseeri, 1866-vuoden veteraaneja, kirjoitti minulle
Böömin Reichenbergistä, että hän oli Königgrätzin luona ollut
rykmentin kadettina minun valloittamassani patterissa, ja osoitti
tämän piirroksella todeksi. Kun hän vielä lisäsi muutamia ystävällisiä
sanoja, kiitin häntä sydämellisesti, ja siten entisten vastustajain
kesken alkoi aivan toverillinen kirjeenvaihto.

Saavuttuani yllä mainitulle solatielle toimitin tiedustelun. Vihollisen


jääkärit olivat kadonneet sadeusvaan. Ympärillä olevat kylät —
edessäni Wsestar, oikealla Rosberitz ja vasemmalla Sweti — olivat
ilmeisestikin vielä vihollisen käsissä; Rosberitzin omistamisesta jo
taisteltiin. Minä olin osastoineni yksin. Takanani ei näkynyt
merkkiäkään meikäläisistä. Suljetut osastot eivät olleetkaan
seuranneet minua etelään päin, vaan näyttivät kääntyneen oikealle.
Päätin tehdä yksinäisyydestäni laajalla taistelutanterella lopun siten,
että etenin solatietä pitkin Rosberitziin. Ennenkuin pääsin
päämäärääni, mennä porhalsi ohitseni vielä useita itävaltalaisia
eskadroneja huomaamatta minua ja pienoista joukkoani. Ne kulkivat
edessäni solatien poikki matalasta kohdasta ja törmäsivät sitten
vähän ajan kuluttua, kuten vilkas kiväärituli ilmaisi, Rosberitzin
koillispuolisessa maisemassa yhteen minulle näkymättömän
meikäläisen jalkaväen kanssa. Pian karkasi sieltä takaisin irtonaisia
hevosia ja lopulta kaikki jälleen laukkasivat ohitseni. Lähetin heidän
jälkeensä vielä muutamia luoteja; ratsumiesten valkoiset viitat olivat
sumeassa ilmassa hyvänä maalitauluna.

Rosberitzissa tilanne oli vakava minun sinne saapuessani.


Divisionamme eri rykmentteihin kuuluvat rajusti eteenpäin
tunkeutuvat osastot ja komppaniat olivat siellä iskeneet yhteen
sangen ylivoimaisten vihollisvoimain kanssa. Heikkojen osastojemme
takana ei läheisyydessä ollut apujoukkoja. Divisionan pääosan oli
korkealla oleva Chlumin kylä vetänyt puoleensa ja siellä riehui ankara
taistelu. Puolipataljoonani, jonka Rosberitzin itälaidassa jälleen
onnellisesti yhdytin, oli niin ollen ensimmäinen apu.

Kummatko ovat enemmän yllätettyjä, itävaltalaisetko vaiko me,


sitä en voi päättää. Joka tapauksessa taajaan yhteen sulloutuneet
vihollisjoukot tunkeutuvat kolmelta puolelta kimppuumme
saadakseen kylän jälleen kokonaan valtaansa. Vaikka
neulasytytinkiväärimme tekeekin niin kamalia tuhoja, hyökkää
sortuneitten ensimmäisten rivien yli yhä uusia kimppuumme. Kylän
kaduilla, palavien olkikattoisten talojen välissä syntyy murhaava
käsikähmä. Ei puhettakaan, että enää taisteltaisiin järjestetyissä
yhtymissä. Itsekukin pistää ja ampuu ympärilleen, minkä kerkiää.
Hohenzollernin prinssi Anton 1:sestä kaartin rykmentistä vaipuu
maahan pahasti haavoittuneena. Vänrikki von Woyrsch, nykyinen
sotamarsalkka, jää muutaman miehen keralla edestakaisin
aaltoilevassa taistelussa prinssin luo. Tämän kultakello tuodaan
minulle, jottei se ehkä joutuisi vihollisrosvojen käsiin. Pian uhkaa
meitä saarron vaara. Selkämme taa johtavalta syrjäkadulta kuuluu
itävaltalaisia torvisignaaleja, kuuluu vihollisten rummutusta, minkä
sointu on kumeampi kuin meidän. Rintamankin puolelta ankarasti
ahdistettuina täytyy meidän peräytyä. Palava olkikatto, joka putoaa
kadulle ja sulkee sen liekkiin ja paksuun savuun, on pelastuksemme.
Pääsemme tämän suojan turvissa peräytymään kylän vieressä
koillispuolella olevalle kukkulalle.

Kauemmaksi emme katkerassa raivossamme tahdo väistyä. Majuri


kreivi Waldersee 1:sestä kaartin jalkaväen rykmentistä, joka v. 1870
kaatui Pariisin edustalla kuningatar Augustan kaartin
krenatöörirykmentin komentajana, antaa vanhimpana läsnäolevana
upseerina pistää maahan molemmat kerallamme olevat liput; niiden
ympärille kokoontuvat joukkomme järjestettäviksi. Jo lähestyy takaa
päin apujoukkojakin. Ja pian sitten lähdetään jälleen raikuvin
rummuin eteenpäin, päin vihollista, joka on tyytynyt, kun sai kylän
valtoihinsa. Tämänkin se pian jättää liittyäkseen armeijansa yleiseen
peräytymisliikkeeseen.

Rosberitzistä jälleen löysimme Hohenzollern-prinssin, joka


kuitenkin lyhyen ajan kuluttua kuoli Königinhofin sairashuoneessa
haavoihinsa. Hänen uskolliset suojelijansa oli vihollinen vienyt
mukanaan vankeina. Useat minunkin osastooni kuuluvat krenatöörit
olivat joutuneet saman kohtalon omiksi pidettyään eräässä
tiilitehtaassa urhoollisesti puoliaan. Kun me kaksi päivää myöhemmin
marssia jatkettaessa iltasella majoituimme Königgrätzin linnoituksen
lounaispuolelle, yhtyivät nämä urheat miehet jälleen meihin.
Linnoituksen komentaja oli, päästäkseen heitä ruokkimasta, käskenyt
heidän marssia preussilaisten leiritulille. Sattui niin onnellisesti, että
he yhdyttivät juuri oman joukkonsa.

Taistelun päätökseksi etenimme vielä Wsestariin saakka ja jäimme


sinne, kunnes tuli lähteä taistelukentältä. Lääkäri tahtoi lähettää
minut sairashuoneeseen päähaavani vuoksi; tyydyin kuitenkin
kääreihin ja kevyeen siteeseen, koska Elben takana oli odotettavana
uusi taistelu, ja sain sitten marssittaessa käyttää kypärin sijasta
lakkia.

Omituisia olivat ne tunteet, jotka heinäkuun 3:nnen iltana


mielessäni liikkuivat. Lähinnä kiitollisuuttani Herraa Jumalaa kohtaan
vallitsi minussa ylinnä ylpeä itsetietoisuus siitä, että olin ollut
osallisena työssä, josta oli tullut uusi kunnian lehti Preussin armeijan
ja preussilaisen isänmaani historiaan. Vaikka emme vielä täydelleen
olleetkaan tietoisia voittomme koko kantavuudesta, oltiin siitä jo
selvillä, että se merkitsi enemmän kuin edelliset kahakat. Uskollisesti
muistelin kaatuneita ja haavoittuneita tovereitani. Osastoni oli
menettänyt puolet luvustaan, mikä osoitti, että se oli täyttänyt
velvollisuutensa.

Kun heinäkuun 6:ntena kuljimme Elben yli Pardubitzin luona


sotasiltaa myöten, odotti kruununprinssi siellä rykmenttiä ja lausui
meille tunnustuksensa taistelussa osoittamastamme käytöksestä.
Kiitimme äänekkäällä hurraalla ja kuljimme edelleen ylpeinä
kiitoksesta, jonka olimme saaneet armeijamme ylipäälliköltä ja
Preussin kruununperilliseltä, ilomielin valmiina seuraamaan häntä
uusiin taisteluihin.

Sotaretken jatko ei kuitenkaan tuottanut meille enää muuta kuin


marsseja eikä siis mitään mainittavia elämyksiä. Heinäk. 22:sena
alkanut aselepo tapasi meidät Ala-Itävallassa, noin 40 kilometrin
päässä Wienistä. Kun pian sen jälkeen lähdimme sieltä marssimaan
takaisin kotimaahan, saimme seuraksemme kamalan vieraan,
koleran. Vasta vähitellen se meistä luopui, vaadittuaan vielä
montakin uhria riveistämme.

Egerin varrelle jäimme muutamaksi viikoksi. Tällöin kohtasin


Pragissa isäni, joka työskenteli johanniittana eräässä
sairashuoneessa Königgrätzin taistelukentällä. Emme laiminlyöneet
tätä tilaisuutta käydä suuren kuninkaamme lähellä olevalla
taistelukentällä. Miten hämmästyimmekään, kun näimme Pragin
luona kaatuneen sotamarsalkka kreivi Schwerinin muistopatsaan
rinnalla, jonka Preussin valtio vapautussodan jälkeen pystytti, vielä
toisenkin, jonka jo aikoja ennen keisari Josef II, Fredrik Suuren
ihailija, oli sinne pystyttänyt vastustajasankarin muistoksi.

Muisto käynnistäni tällä taistelutantereella johtui maailmansodan


kuluessa jälleen erikoisen elävästi mieleeni. Aivan itsestään tulee
tehneeksi vertailun vuoden 1757 Preussin ja vuoden 1914 Saksan
aseman välillä. Samoin kuin Pragia seurannut Kolin vei useita voittoja
seurannut Marnen taistelukin suuren hyökkäysaatteemme myttyyn,
pakottaen isänmaani olemassaolon taistelun kohtalokkaaseen
pidentämiseen. Mutta kun seitsenvuotisen kamppailun päättyessä
näemme mahtavan Preussin, on sen sijaan äskeisen nelivuotisen
epätoivoisen taistelun päättyessä edessämme murtunut Saksa.
Emmekö ole olleet isäimme veroisia?
Syyskuun 2:sena kuljimme paluumarssiamme jatkaen Böömin ja
Saksin välisen rajan poikki ja syyskuun 8:ntena Grossenhain-Elsterin
viertotiellä Mark Brandenburgin rajan poikki. Siinä meitä odotti
kunniaportti. Sen alitse kuljimme "Heil Dir im Siegerkranzin" sävelten
soidessa kotimaahan. Mitä tunsimme, sitä minun ei tarvitse kuvailla.

Syyskuun 20:ntenä tapahtui juhlallinen marssimme Berliiniin.


Paraatiasentoon käytiin nykyiselle Königsplatzille, joka silloin oli
hiekkainen harjoituskenttä. Siinä missä yleisesikunta-rakennus
nykyään on, oli halkopiha, jonka pajujen reunustama tie yhdisti
kaupunkiin. Krollin "Etablissementti" oli sitä vastoin jo olemassa.
Paraatiasento-paikalta marssivat juhlivat joukot Brandenburger Torin
kautta Lindeniä pitkin Opernplatzille. Siellä tapahtui marssi Hänen
Majesteettinsa kuninkaan ohi. Blücher, Scharnhorst ja Gneisenau
katselivat sitä patsaittensa päästä. He saattoivat olla meihin
tyytyväiset!

Paraatiasentoon marssiakseen oli minun joukkoni kokoontunut


Floraplatzille. Komentaja antoi siellä minulle Punaisen Kotkan 4:nnen
luokan ritarimerkin miekkoineen käskien paikalla kiinnittää sen
paikoilleen, koska uusien ritarimerkkien tuli olla kaupunkiin
marssittaessa näkyvissä. Minun jotenkin neuvottomana katsellessani
ympärilleni astui katsojain joukosta vanhanpuoleinen nainen ja
nuppineulalla kiinnitti kunniamerkin rintaani. Milloin olen myöhemmin
vuosien kuluessa jalan tai ratsain kulkenut Floraplatzin poikki, aina
olen kiitollisena muistellut ystävällistä berliinitärtä, joka siellä kiinnitti
18-vuotiaan luutnantin rintaan hänen ensimmäisen ritarimerkkinsä.

Sodan jälkeen määrättiin Hannover 3:nnen kaartinrykmentin


rauhanaikaiseksi asemapaikaksi. Tällä tahdottiin varmaankin tälle
entiselle pääkaupungille osoittaa kohteliaisuutta. Vastahakoisesti
sinne lähdimme, mutta kun 12 vuoden kuluttua tuli eron hetki,
rykmentti kun siirrettiin Berliiniin, niin tuskinpa oli sen riveissä
ainoatakaan, jolle ero ei olisi käynyt haikeaksi. Itse puolestani olin
niin mieltynyt tähän kauniiseen kaupunkiin, josta minun jo v. 1873
täytyi lähteä, että myöhemmin virasta erottuani muutin sinne.

Pian solmimme uudessa olopaikassamme tuttavuuksia. Monet


hannoverilaiset sentään valtiollisista syistä pysyttelivät aivan erillään.
Emme koskaan paheksuneet tätä uskollisuutta vanhaa
hallitsijahuonetta kohtaan, vaikka olimmekin syvästi vakuutetut siitä,
että Hannover oli yhdistettävä Preussiin. Ainoastaan milloin
welfiläisyys yksityisten käyttäytymisessä ei arvokkaasti kantanut
mielipahaansa, vaan pukeutui häijyyteen, loukkauksiin tai
niskoitteluun, kohtelimme sitä kuin vastustajaa.

Yhä enemmän juurruimme vuosien kuluessa Hannoveriin, joka


mitä onnellisimmalla tavalla tarjoaa suurkaupungin edut ilman sen
epäkohtia. Vilkkaaseen hienostuneeseen seuraelämään, joka
myöhemmin, Ranskan sodan jälkeen, kohosi korkeimmilleen sen
johdosta, että Hänen Kuninkaallinen Korkeutensa, Preussin prinssi
Albrecht puolisoineen oleskeli siellä vuosikausia, liittyi käynnit
oivallisessa hoviteatterissa, mikä nuorelle upseerille ei tullutkaan
kalliiksi. Ihanat puistot ja Eilenriede, Saksan kauneimpia metsiä,
ympäröivät kaupunkia; virantoimituksen vapaahetkinä saatoimme
jalan tai ratsain käydä niitä ihailemassa. Ja maakuntamanöövereillä,
joihin otimme osaa sen sijaan että olisimme lähteneet Potsdamiin
kaartin syysharjoituksiin, opimme vähitellen tuntemaan koko Ala-
Saksin vuorilta mereen saakka ja mieltymään sen omituisuuteen.
Pienpalvelus suoritettiin Waterlooplatzilla. Kolme vuotta peräkkäin
olen siellä harjoittanut rekryyttejäni ja eräässä tämän torin varrella
olevassa kasarmissa oli minulla ensi virka-asuntoni, asuin- ja
makuuhuoneeni. Vielä nykyään siirryn mielelläni tässä
kaupunginosassa käydessäni ajatuksissani takaisin kultaiseen
nuoruuden aikaan. Melkein kaikki silloiset toverini ovat kootut
suureen armeijaan. Monivuotisen komppanianpäällikköni, virasta
eronneen majuri von Seelin, sain kuitenkin hiljakkoin nähdä.
Sanomattoman paljon olen velkaa tälle jo yli 80-vuotiaalle; hän oli
aivan erikoisesti minulle esikuva ja opettaja siinä miten ankaralta
kannalta virantoimitus on otettava.

Hänen Majesteettinsa Kuningas kävi ensi kerran Hannoverissa


kesällä 1867. Hänen tullessaan seisoin palatsin edustalla Yrjön
puistossa kunniakomppaniassa ja sotaherrani osoitti minulle
suosiotaan kysymällä, missä tilaisuudessa olin miekka-ritarimerkin
ansainnut. Myöhempinä vuosina, kun 1870/71 vielä olin saanut
rautaristin, kysyi keisarini ja kuninkaani minulta vielä monta kertaa
samaa asiaa viransiirto- ja ylennysesittelyissä. Aina tunsin silloin
samanlaisen ylpeyden sykähdyksen ja samanlaista iloa kuin
silloinkin.

Yhä kiinteämmiksi lujittuivat Hannoverin valtiolliset, sotilaalliset ja


yhteiskunnalliset olot. Pian oli tämä uusikin maakunta verisillä
tappotanterilla kunnostautuva Preussin tasa-arvoisena osana!

1870-vuoden sodan alkaessa lähdin 1:sen pataljoonan


adjutanttina vihollista vastaan. Komentajani, majuri von Seegenberg,
oli palvellut vuosien 1864 ja 1866 sodissa rykmentissä
komppanianpäällikkönä. Hän oli sodan karkaisema Vanhan Preussin
sotilas, suhdattoman tarmokas ja joukoistaan väsymättömästi
huolehtiva. Suhteemme olivat hyvät.

Sodan alku tuotti rykmentille, samoin kuin koko kaartin


armeijaosastollekin, sikäli haikeita pettymyksiä, ettemme
viikkokausia kestäneistä marsseista huolimatta päässeet viholliseen
käsiksi. Vasta kun Pont à Moussonin yläpuolella jo olimme kulkeneet
Moselin poikki ja saapuneet melkein Maasille, saattoivat Metzin
länsipuolella sattuneet tapaukset meidät elok. 17:ntenä sikäläiseen
seutuun. Kaarsimme pohjoista kohti ja saavuimme ylenmäärin
rasittavan marssin jälkeen tämän päivän illalla Vionvillen
taistelukentälle. Kaikkialta näkyi vastaamme jälkiä III:n ja X:n
armeijaosastomme edellisen päivän hirveästä kamppailusta.
Sotatilanteesta emme saaneet kuulla sanottavasti mitään. Niinpä
marssimme elokuun 18:ntena Hannonvillen luona olevilta
majailupaikoiltamme Mars la Tourin länsipuolitse joutuen
tilanteeseen, joka oli meille jotenkin epäselvä. Puolenpäivän aikaan
saavuimme Doncourtiin. Marssi, joka siihen saakka oli ollut verraten
lyhyt ja suoritettu taajoissa joukkomuodostumissa ikävässä
sekaannuksessa saksilaisen (XII) armeijaosaston kanssa, polttavassa
helteessä, sankoissa pölypilvissä, voimatta edellisestä päivästä
saakka saada riittävästi vettä, oli käynyt ylen rasittavaksi. Itse olin
kesken marssia ensin käynyt kaartin 2:seen rakuunarykmenttiin
kuuluneen kaatuneen serkkuni haudalla Mars la Tourin luona ja
sitten käyttänyt tilaisuutta ratsastaakseni 38:nnen jalkaväen
brigaadin ja 1:sen kaartin rakuunarykmentin hyökkäyskentän poikki.
Eräässä solassa ja sen pohjoispuolella näkyi rivittäin, jopa
paikoitellen kasoittainkin kaatuneita, preussilaisia samoin kuin
ranskalaisiakin, mikä osoitti, kuinka murhaava taistelu oli tässä ja
lähimmässä ympäristössä ollut.

Doncourtin luona pysähdyimme ja suoriuduimme keittämään.


Leviää huhuja, että Bazaine on marssinut länteen ja päässyt pakoon.
Aamupäivän innostus on koko lailla laimentunut. Äkkiä alkaa idässä
päin valtava tykkituli. IX armeijaosasto on kohdannut vihollisen.
Taistelun melu herättää meilläkin kaikki eloon. Hermot alkavat
uudelleen jännittyä, sydän jälleen sykkiä lujemmin ja iloisemmin.
Lähdetään matkaa jatkamaan koilliseen päin. Hetki hetkeltä
vahvistuu se tunne, että tänään on edessä valtava taistelu.
Sijoitumme rintamaan ja saamme käskyn avata lippumme. Se
tapahtuu kolminkertaisin hurraa-huudoin; vaikuttava silmänräpäys!
Melkein samaan aikaan laukkaa ohitsemme kaartin pattereita itään
päin, kohti vastustajan asemia. Yhä valtavammaksi kehittyy
taistelukuva. Amannweilerin kukkulain takaa, puolitiessä St.
Privat'han, kohoaa sankkoja raskaita savu-pilviä. Siellä ylhäällä
seisoo vihollisen jalkaväkeä ja tykistöä monessa linjassa toistensa
takana ja samalla yläpuolellakin. Niiden tuli kohdistuu toistaiseksi
koko voimallaan IX armeijaosastoa vastaan. Vihollinen ulottuu
kaikesta päättäen sen vasemman sivustan ohi. Yksityisseikkoja ei voi
erottaa.

Välttääksemme rintamahyökkäystä vihollisen asemaa kohti


käännymme eräässä niittysolassa pohjoiseen Ste Marie aux Chenesiä
kohti, kulkien noin viisi kilometriä yhdensuuntaisesti vihollisen
rintaman kanssa. Divisionamme etujoukko ja meidän vasemmalla
puolellamme Auboueta kohti marssivan XII:n armeijaosaston osa
hyökkää kylän kimppuun ja valloittaa sen. Ste Marien anastettuaan
brigadimme marssii asentoon aivan kylän eteläpuolelle, rintama
kylää kohti. Lepäämme. Tosin omituista lepoa. Taajoihin suljettuihin
osastoihimme iskee tuon tuostakin St. Privat'sta eteenpäin
lähetettyjen vihollisen tarkka-ampujain harhailevia luoteja. Luutnantti
von Hellendorff 1:sestä kaartin rykmentistä saa lähellä minua
luodista surmansa; hänen isänsä, saman rykmentin
pataljoonankomentaja, kaatui niinikään lähellä minua 1866
Königgrätzin luona Rosberitzissa. Monta miestä haavoittui.
Harkitsen tilannetta. Idässä päin, melkein nykyisen rintamamme
oikealla sivustalla, on loivasti kohoavalla mäellä St. Privat, jonka
suora, poppelien reunustama viertotie yhdistää parin kilometrin
päässä olevaan Ste Marie aux Chenesiin. Tämän tien pohjoispuolella
on maisema puurivien vuoksi enimmäkseen näkymättömissä, mutta
se vaikuttaa yhtä suojattomalta kuin viertotien eteläpuolellakin oleva
kenttä. Itse kukkuloilla vallitsee melkein kammottava hiljaisuus.
Silmä väkisinkin teroittaa näkövoimaansa keksiäkseen sieltä
aavistettuja salaisuuksia. Meidän puolellamme ei näytä pitävän
tarpeellisena riistää niiltä tiedustelemalla harsoa. Niinpä jäämme
levollisina alallemme.

Kello 1/2 6:n aikaan iltapäivällä saa brigadimme hyökkäyskäskyn.


Meidän tulee edetä heti Ste Marien itäpuolitse pohjoista kohti ja
sitten viertotien tuolla puolella kääntyä St. Privat'ta kohti
hyökkäykseen. Paikalla tunkee mieleen epäily, että tämän taidokkaan
liikkeen oikeaan sivustaan voidaan hyökätä St. Privat'sta.

Vähää ennen kuin pataljoonamme nousevat, alkaa koko maisema


St. Privat'n ympärillä elää ja verhoutuu ampuvain ranskalaisten
linjain tuiskuun. 4 kaartin brigadi, joka ei kuulu meidän
divisionaamme, etenee nimittäin jo viertotien eteläpuolella. Sen
vuoksi kääntyy toistaiseksi vastustustehon koko voima sitä vastaan.
Tämä joukko palaa pian kuonaksi, ellemme me, 1 kaartin brigadi,
kiireimmiten hyökkää viertotien pohjoispuolelta ja siten saa aikaan
huojennusta. Tosin näyttää melkein mahdottomalta päästä sinne.
Komentajani ratsastaa, minä mukana, maisemaa tarkastamaan ja
antamaan brigadin puitteissa toimivalle pataljoonalle marssisuunnan.
Keskeytymätön tulihirmumyrsky pyyhkii nyt koko kentän poikki
meitäkin vastaan. Meidän täytyy kuitenkin koettaa toteuttaa aloitettu
liike. Meidän onnistuukin kulkea tien poikki. Sen toiselle puolelle
taajaan sulloutuneet kolonnat asettuvat rintamaan vihollisen
tulilinjoja kohti ja hyökkäävät hajaantuen eteenpäin St. Privat'ta
vastaan. Yhteisenä pyrkimyksenä on päästä niin lähelle vihollista
kuin suinkin, jotta voisimme käyttää kiväärejämme, jotka
chassepot'ihin verraten ovat ala-arvoiset. Tapaus vaikuttaa samalla
sekä järkyttävästi että valtavasti. Joukkojen jäljessä niiden
syöksyessä eteenpäin kuin raesadetta vastaan peittyy maa kuolleilla
ja haavoittuneilla, mutta urhea väki tunkeutuu herkeämättä
eteenpäin. Yhä uudelleen ja uudelleen upseerit ja aliupseerit, joiden
sijalle pian krenatöörien ja fysilieerien täytyy astua, tempaavat sen
pystyyn ja eteenpäin. Näen ohiratsastaessani, kuinka kaartin
armeijaosaston komentava kenraali, Württembergin prinssi August,
Ste Marien edustalla ratsunsa selässä istuen seuraa valtavaa
kamppailua, johon hänen uljaat rykmenttinsä syöksyvät, siinä ehkä
tuhoutuakseen. Häntä vastapäätä kuuluu marsalkka Canrobert
seisoneen St. Privat'n edustalla.

Saadakseen pataljoonansa pois joukkojen tungoksesta Ste Marien


koillispuolelta ja hankkiakseen sille taistelua varten tarpeellisen
liikuntavapauden ei komentajani anna sen heti asettua rintamaan St.
Privat'ta kohti, vaan jatkaa pataljoonan mukana aluksi maiseman
alanteessa entistä suuntaa pohjoista kohti. Täten siirrymme
jonkinlaisessa suojassa niin kauas sivulle päin, että me
kääntyessämme muodostamme brigadin vasemman sivustan. Näissä
oloissa pääsemme yhä enemmän väkeä menettäen puolitiehen Ste
Marie-Roncourtia kohti.

Ennenkuin täältä voimme ryhtyä St. Privat'ta kiertämään, täytyy


meidän olla selvillä Roncourtista, jota Aubouesta etenevät saksilaiset
eivät vielä näytä saavuttaneen. Ratsastan sinne, näen kylän tyhjäksi
sekä ystävistä että vihollisista, mutta huomaan kylän itäpuolella
olevissa kivilouhoksissa ranskalaista jalkaväkeä. Minun onnistuu vielä
ajoissa viedä Roncourtiin pataljoonastani kaksi komppaniaa. Pian sen
jälkeen tekee vastustaja kivilouhoksista hyökkäyksen, joka torjutaan.
Nyt voivat molemmat toiset komppaniat kääntyä St. Privat'n
pohjoista tiensuuta kohti ja edes vähän huojentaa brigadin muiden
osien ankaraa rintamataistelua. Myöhemmin, kun XII:n
armeijaosaston osat ovat ottaneet Roncourtin haltuunsa, lähtevät
molemmat sielläkin käytetyt komppaniamme liikkeelle.

Rintamalla jatkuu sillä välin verinen kamppailu. Vihollisen puolelta


koettaa monesta linjasta tuleva, katkeamaton jyrisevä jalkaväen tuli
lyödä maahan kaiken elämän laajalla suojaamattomalla
hyökkäyskentällä. Meidän puolellamme moniaukkoinen linja
hajanaisia joukkoriekaleita, jotka eivät kuitenkaan ole vain kynsin
hampain maassa kiinni, vaan ikäänkuin suonenvedontapaisin
nytkäyksin yhä ja yhä koettavat syöksyä vastustajan kimppuun.
Henkeäni pidätellen katselen näitä taistelukohtauksia, äärimmäisen
jännittyneenä, eikö vihollinen vastahyökkäyksellä syökse takaisin
joukkojamme. Mutta ranskalaiset pysyvät jäykästi asemissaan,
lukuunottamatta ratsuväen yritystä murtautua kimppuumme St.
Privat'n pohjoispuolitse, joka yritys kuitenkin tyrehtyi alkuunsa.

Jalkaväen taistelussa seuraa hengähdyspaussi. Kumpikin puoli on


uuvuksissa ja pysyy toistaan vastassa, vain harvakselleen
ammuskellen. Aselepo on taistelukentällä niin ilmeinen, että
vasemmalta sivustalta voin tulilinjaa pitkin ratsastaa melkein brigadin
keskustaan ja takaisin ilman vaaran tunnetta. Mutta sitten aloittaa
esiintuotu tykistömme ruhjomatyönsä ja pian sitä paitsi yhtyvät Ste
Mariesta käsin 2:sen kaartinbrigadin verekset voimat 4:nnen ja 1:sen
veriinsä sortuviin tähteisiin, kun taas luoteesta lähestyy saksilaisia
apujoukkoja. Raskaasti taistelevan jalkaväen kestämä painostus käy
tuntuvasti helpommaksi. Missä jonkun aikaa näytti vallitsevan vain
kuolemaa ja tuhoa, siellä alkaa nyt viritä uutta taistelutointa, ilmetä
uutta taistelutahtoa, joka lopulta päättyy sankarimaiseen rynnäkköön
vihollista vastaan. Hetki on sanomattoman järkyttävä, kun ilta-
auringon mailleen mennessä etumaiset taistelurivimme nousevat
viimeiseen rynnäkköön. Ei mikään käsky niitä pakota, sama
sielullinen tunne, rautainen päätös voittaa, pyhä taistelunvimma
syöksee niitä eteenpäin. Tämä vastustamaton vuoksi tempaa kaikki
mukaansa. Vastustajan varustukset sortuvat pimeän tullessa.
Suunnaton riemastus valtaa meikäläiset.

Kun myöhään illalla luin pataljoonamme tähteet ja sitten aamulla


näin rykmenttini muitten osien vielä paljon heikommat jäännökset,
kun sisällinen jännitys raukesi, pääsivät inhimillisen tunteen
hellemmät puolet vallalle. Silloin ei ajattele vain sitä, mitä taistelussa
on voitettu, vaan myös sitä, mitä tämä menestys on maksanut.
Kaartin 3:s rykmentti oli kaikkiaan menettänyt 36 upseeria, 1060
aliupseeria ja miestä, joista kuolleita oli 17 upseeria ja 304 miestä.
Samanlaiset olivat kaartin kaikkien jalkaväkirykmenttien tappiot.
Äskeisen suuren sodan kuluessa on jalkaväkemme useinkin kärsinyt
yhtä suuria tappioita kuin kaarti St. Privat'n luona. Saatoin silloisista
kokemuksistani arvata, mitä tämä joukolle merkitsee. Mikä määrä
parhaita, osittain korvaamattomia voimia siinä vaipuu hautaan!
Mutta mikä ihana henki onkaan toiselta puolen elänyt kansassamme,
kun se tästä huolimatta on vuosikausia kestäneissä ponnistuksissa
kyennyt yhä säilyttämään armeijamme taistelukuntoisena!

Elokuun 10:ntenä hautasimme kuolleemme ja 20:ntenä iltapäivällä


marssimme edelleen länttä kohti. Divisionankomentajamme,
kenraaliluutnantti von Pape, lausui meille matkalla tunnustuksensa
menestyksestämme ja tehosti, että me siinä kuitenkin olimme vain
täyttäneet velvollisuutemme. Lopuksi hän lausui: "Muutoin pitää
meistä paikkansa sotamiehen vanha sananparsi: Vaikka kaatuisi
oikealla ja vasemmalla tuhansia ja sortuisi joka ystävä, me jatkamme
taistelua!" Raikuva hurraahuuto Hänen Majesteettinsa Kuninkaan
kunniaksi oli vastauksemme.

Miten St. Privat'n taistelua sotilaalliselta kannalta


arvosteltaneenkin, se ei missään tapauksessa siitä menetä mitään
sisäisestä suuruudestaan. Tämä suuruus on se henki, jonka avulla
joukot tuntikausia kestivät hirveän pulan ja lopulta voitokkaasti siitä
suoriutuivat. Tämä tunne meissä elokuun 18:tta muistellessamme
edelleenkin oli määräävänä. Vakava mieliala, joka taistelun johdosta
oli miehemme vallannut, hälveni pian; sen sijaan kunkin yksityisen
suoritusten ja kaikkien yhteisten toimien synnyttämä ylpeys on
säilynyt tähän päivään saakka. Vielä vuonna 1918 vietin, vieläpä
jälleen vihollismaassa, St. Privat'n vuosipäivää 3:nnen kaartin
rykmentin keralla, johon kuninkaani armosta jälleen kuuluin. Useita
"vanhoja herroja", vuoden 1870 sotureita, muiden mukana ennen
mainittu virasta eronnut majuri von Seelkin, oli rientänyt kotoa
rintamalle tähän muistojuhlaan. Silloin näin viimeisen kerran tämän
uljaan rykmentin!

Mikäli olen kuullut, ovat vastustajamme nyt repineet Preussin


kaartin muistopatsaat St. Privat'n kukkuloilta. Vaikkapa tämä olisikin
totta, en kuitenkaan luule, että moinen teko on omiaan alentamaan
saksalaista sankariutta. Usein olen nähnyt saksalaisten upseerien ja
sotamiesten hiljaisessa kunnioituksessa seisovan ranskalaisten
sotamuistomerkkien edessä, vaikka ne ovatkin olleet Saksan
puolella, ja olen heidän kerallaan tuntenut kunnioitusta vastustajan
tekoja ja uhreja kohtaan.
Taistelun jälkeen pataljoonankomentajani ainoana
haavoittumattomana esikuntaupseerina otti vastaan rykmentin
johdon. Minä jäin tässä uudessakin toimessa hänen adjutantikseen.

Ne sotatoimet, jotka Sedanin luona johtivat muistettavaan


päätökseensä, eivät minulle tuoneet mukanaan sanottavaa.
Alkunäytöksen, Beaumontin taistelun, näimme elokuun 30:ntenä
reservissä seisten vain katsojina. Syyskuun 1:senä seurasin taistelun
kulkua etupäässä näkijänä. Kaartin armeijaosasto muodosti koillisen
osan siitä rautaisesta renkaasta, joka päivän kuluessa sulkeutui Mac
Mahonin ympärille. Nimenomaan seisoi 1 kaartin brigadi aamusta
iltapäivään Givonnen laakson itäpuolella olevien kukkulain takana
valmiina odottaen. Käytin tätä toimettomuutta lähteäkseni kaartin
patterien luo, jotka oli ajettu kukkulain reunalle pitkään riviin ja jotka
nakkelivat ammuksiaan laakson poikki vastakkaisen rinteen
enimmäkseen metsäisillä kukkuloilla seisoviin ranskalaisiin. Täältä
avautui avara näköala koko seudun yli Ardennien metsästä aina
Maasin puolen rinteihin saakka. Varsinkin olivat Illyn ylänkömaisema
ja Givonne-Bachesin länsipuolella olevat ranskalaiset asemat ynnä
Bois de la Garenne lähellä minua, aivan ulottuvillani. Ranskan
armeijan turmio kehittyi siis aivan silmieni edessä. Saatoin seurata,
kuinka saksalainen tulikehä vähitellen sulkeutui onnettoman
vastustajan ympärille ja kuinka ranskalaiset tekivät sankarillisia,
vaikka alusta alkaen täydelleen toivottomia yrityksiä murtaakseen
yksityisillä hyökkäyksillä saartorenkaamme. Minulle taistelu oli vielä
erikoisesti mielenkiintoinen. Tappelun edellisenä päivänä olin
nimittäin Carignanin läpi marssittaessa ratsuraippaa ostaessani
puheliaalta ranskalaiselta satulasepältä kuullut, että Ranskan keisari
oli armeijansa luona. Kerroin tätä edelleen, mutta sitä ei uskottu.
Kun taistelupäivänä, vihollisen tuhon muodostuessa yhä
täydellisemmäksi, sanoin: "Tuon kattilan pohjalla on Napoleonkin",
nauroivat minulle kaikki. Suuri oli riemuni, kun otaksumani
myöhemmin osoittautui todeksi.

Rykmenttini ei tänä päivänä ottanut osaa mainittavampaan


taistelutoimintaan. Kello 3 aikaan iltapäivällä kuljimme 1:sen kaartin
rykmentin perässä Givonne-kielekkeen poikki. Ranskalaisten
vastustukselta oli jo tällöin joka puolella toimiva tykistömme lyönyt
aseen kädestä. Oikeastaan ei nyt ollut muuta tehtävää kuin pusertaa
vihollista tiukempaan Sedania kohti, jotta vastarinnan toivottomuus
kävisi sille oikein ilmeiseksi. Ne tuhokuvat, jotka tätä tehtäessä näin
Bois de la Garennen koillisreunalla, voittivat kaikki kauhut, mitä
taistelutantereella olen milloinkaan kohdannut.

Jo kello 4:n ja 5:n välillä ryhdyimme majailutoimiin. Taistelu oli


päättynyt. Yksi kiväärinlaukaus vain paukahti illalla ja luoti mennä
viuhkaisi ylitsemme. Katsahtaessamme metsän reunaan heilutti siellä
algerialainen jalkasotilas uhkaavin elein kivääriään ja katosi sitten
pitkin loikkauksin puitten pimentoon.

En milloinkaan ennen enkä jälkeenkään ole viettänyt yötä


taistelutantereella samanlaisin täydellisen tyydytyksen tuntein kuin
silloin. Uneksihan jokainen, kun "Nyt Herraa kaikki kiittäkäät" oli
vaiennut, että sota pian päättyisi. Siinä kyllä katkerasti petyimme.
Sota jatkui. Tätä ranskalaisten vastarinnan jatkamista Sedanin
tappelun jälkeen on meillä usein pidetty vain ranskalaisten
hyödyttömänä itsensä raatelemisena. Tätä mielipidettä en voinut
hyväksyä enkä voinut olla tunnustamatta silloisten diktaattorien
kauas kantavaa katsetta. Ranskan tasavallan aseihin tarttuminen
siinä, missä keisarikunnan oli ollut pakko laskea ne alas, osoitti
mielestäni sekä esikuvaksi kelpaavaa isänmaallista henkeä, että
myös laajaa valtiollista tulevaisuuden älyä. Luulen vielä tänä päivänä,
että jos Ranska tällä hetkellä olisi menettänyt vastustustahtonsa, se
olisi pannut alttiiksi suurimman osan kansakunta-arvoaan ja samalla
paremman tulevaisuuden toivoaan.

Syyskuun 2:sena saapui aamupäivällä kruununprinssi


vieraaksemme ja häneltä saimme ensimmäisen tiedon Napoleonin ja
hänen armeijansa vangiksi joutumisesta; iltapäivällä kävi luonamme
kuninkaamme ja sotaherramme. Verrattomasta riemusta, jolla
hallitsijaa tervehdittiin, on tuskin mahdollista luoda mielikuvaa.
Miehiä oli mahdoton saada pysymään rivissä ja asennossa. He
ympäröivät kiihkeästi rakastetun herransa ja suutelivat hänen
käsiään ja jalkojaan. Hänen Majesteettinsa näki kaartinsa ensi kerran
tässä sodassa; hän kiitti meitä kyyneltyvin silmin siitä, mitä St.
Privat'n luona olimme saaneet aikaan. Tämä oli runsas palkka niistä
raskaista hetkistä. Kuninkaan seurueessa oli myös Bismarck.
Olympolaisen levollisena hän ratsasti hevossaaton jälkipäässä, mutta
tunnettiin ja sai osakseen erikoisen hurraan, jonka hän myhäillen otti
vastaan. Moltke ei ollut saapuvilla.

Syyskuun 3:ntena sai rykmenttini käskyn edetä Sedania kohti ja


tunkea kaikki linnoituksen ulkopuolella olevat ranskalaiset sen sisään.
Tämän kautta oli estettävä linnoituksen edustalla olevassa seudussa
kierteleviä lukuisia vastustajia viehättymästä anastamaan kiväärejä,
joita oli suuret määrät joka puolella, ja koettamaan vaikkapa
toivotontakin murtautumisyritystä. Ratsastin edellä Bois de la
Garennen läpi sen yläpuolella aivan kaupungin laidassa oleville
mäille. Maisemaa elähdyttävät punahousut osoittautuivat
vaarattomiksi viittain ja peitteitten etsijöiksi, he kun aikoivat ottaa
nämä mukaansa vankeuteen. Rykmentin ei sen vuoksi tarvinnut
asiaan puuttua. Muutama kulkuvahti lähellä majailevista muista
joukko-osastoista riitti. Kun näine tietoineni ratsastin perässäni
tulevaa rykmenttiä vastaan, näin metsässä pohjoiseen vievällä
viertotiellä pölypilven. Ranskalainen sotilaslääkäri, joka seisoi
sairaalaksi muutetun Querimont-Fermen edustalla ja saattoi minua
tielle kappaleen matkaa, virkkoi minulle, että pölypilvessä oli keisari
Napoleon mustain husaarien saattamana matkalla Belgiaan. Jos
olisin tullut maantielle pariakin minuuttia ennen, olisin päässyt tämän
historiallisen hetken näkijäksi.

Saman päivän illalla lähdimme taistelutantereelta ja majoituimme


lähiseudulle. Yhden lepopäivän jälkeen lähdimme sitten
majoistamme marssimaan Pariisia kohti. Täten tulimme ensinnäkin
kulkemaan Beaumontin taistelukentän poikki ja sitten seutuihin,
jotka äskeisessä suursodassa ovat olleet ankarain taisteluiden
näyttämönä. Syyskuun 11 ja 12 p:nä rykmentti oli Craonnessa ja
Corbenyssa, kahdessa herttaisessa pikkukaupungissa Winterbergin
juurella. Toukokuun 28:ntena 1918 seisoin Soissonsin—Reimsin
taistelun aikana Kaikkeinkorkeimman Sotaherrani rinnalla juuri tällä
samalla Winterbergillä. Huomautin Hänen Majesteetilleen, että 48
vuotta takaperin olin tuolla alhaalla majaillut. Molemmista
kaupungeista oli nyt tuskin raunioitakaan jäljellä. Talo, jossa olin
asunut Corbenyn torin kulmassa, oli raunioiden ja tuhan alla
näkymättömissä. Winterbergkin, joka 1870 oli vihanta, osaksi
metsittynyt selänne, oli nyt paljaina jyrkkinä rinteinä, joilta luodit,
kuokat ja lapiot olivat riistäneet viimeisenkin maamurusen.
Surullinen tapaaminen kaikesta silloisesta voitonriemusta huolimatta.

Syyskuun 19:ntenä näimme Gonessen luota ylängöltä, 8 km St.


Denis'n koillispuolelta, ensi kerran Ranskan pääkaupungin.
Invaliidikirkon ja muitten kirkkojen kullatut kuvut kimaltelivat
aamuauringon säteissä. Luulen pyhiinvaeltajain muinoin katselleen
Jerusalemia samanlaisin tuntein kuin me nyt jalkaimme juuressa
lepäävää Pariisia. Varhain kello 3:n aikaan, pimeässä olimme
lähteneet liikkeelle ja vietimme nyt koko kauniin syyspäivän
sänkipelloilla valmiina toimeen, jos meidän tai naapuridivisionain
luona etuvartio-asemain miehittäminen ja varustaminen kohtaisi
vaikeuksia. Vasta iltapäivällä myöhään pääsimme majautumaan.
Oleskelimme lähinnä seuraavan ajan Gonessessa, jolla on
historiallinen merkityksensä sen johdosta, että Blücher ja Wellington
v. 1815 Pariisin edustalle saapuessaan siinä tapasivat toisensa
neuvotellakseen sotatointen jatkamisesta.

Nopean täydellisen menestyksen asemesta meidän täytyikin


Pariisin edustalla vielä kuukausimääriä toimittaa aika rasittavaa ja
epäkiitollista saartopalvelusta, jota rintamallamme vain harvoin
keskeyttivät vähäiset uloshyökkäys-taistelut. Tämän työn
yksitoikkoisuuteen tuli vasta joulun aikaan sotilaallisesti
vilkastuttavaa raikasta tuulta, kun linnakkeita ruvettiin ampumaan.

Tammikuun puoliväli toi sitten minulle erikoisen elämyksen. Minut


lähetettiin erään kersantin keralla rykmenttini edustajana Versaillesiin
keisaria julistamaan. Käskyn sain tammikuun 16:nnen iltana. Vielä
samana yönä tuli minun saapua 15 kilom. päässä olevaan
Margencyhin, jossa Maasin armeijan ylikomento oli pitänyt huolta
itäisistä leireistä tulevain edustajain majoituksesta. Sieltä meidän piti
17 päivänä kulkea St. Germainin kautta Versaillesiin. Ratsain en
voinut matkata tätä yli 40 kilometrin mittaista väliä, koska minun
täytyi ottaa mukaan tavaroita. Istahdin sen vuoksi kersanttini ja
palvelijani keralla nopean päätöksen tehden 1:sen kaartinrykmentin
henkikomppanian tavaravaunuun. Tämä komppania majaili samassa
kylässä kuin minäkin ja oli niinikään saanut käskyn tulla Versaillesiin.
Käymäjalkaa ajaen matkasimme kovassa pakkasessa yön pimeässä
Margencyhin, jossa meitä eräässä huvilassa odottivat palavat
kamiinit, hyvä olkivuode ja tee.

Tammikuun 18:ntena ilmoitti minulle henkikomppanian ajuri, että


hän vast'ikään olikin saanut käskyn heittää Versaillesin matkan ja
palata rykmenttiin. Onneksi otti eräs toveri minut ja palvelijani
kaksipyöräisille rattaillensa ja kersanttinikin pääsi jonkun
hyväntahtoisen kulkijan ajoneuvoihin. Näin ajoimme siis selkeänä
talviaamuna kohti St. Germainia, lähintä päämääräämme. Kohtalon
mahtien kanssa ei kuitenkaan ole mahdollista solmia ikuista liittoa.
Täpötäysien rattaitten toinen pyörä irtaantui äkkiä ja
kädenkäänteessä makasimme täyslukuisina maantiellä. Onneksi
tapasimme kuitenkin eräässä paikassa kenttäpajan, joka korjasi
vahingon, niin että St. Germainissa saatoimme jälleen liittyä muihin
matkustajiin syömään aamiaista "Pavillon d'Henri quatre'ssa", joka
on pengermällä Seinen yläpuolella mitä ihanimmalla paikalla.
Omituinen oli se vaunujono, joka sitten laskevan auringon säteissä
juhlallisesti ajoi Versaillesiin. Siinä oli edustettuna kaikenkaltaiset
ajoneuvot, mitä vain Pariisin ympäristön palatseista, huviloista ja
talonpoikaistaloista kokoon saatiin. Suurimman vaikutuksen tekivät
perunavaunut, joiden matkustaja oli päivän kunniaksi pystyttänyt
istuimen oikealle ja vasemmalle puolelle suuren preussilaisen lipun
— saksalaisiahan ei silloin vielä ollut. Pian pääsin Avenue de Parisin
varrella asuvan ystävällisen vanhan naisen luo hyvään kortteeriin ja
illalla yhdyimme Hotel de Reservoirsiin kauan kaivatulle illalliselle.

Tammikuun 18:nnen juhla on yleiseen tunnettu. Se oli minulle


vaikutelmista rikas. Ylevimmin ja samalla mieleen käyvimmin vaikutti
tietysti kaikkeinarmollisimman Kuninkaani ja Herrani henkilöllisyys.
Hänen levollinen, yksinkertainen, kaikkea henkevöittävä arvonsa
antoi juhlalle enemmän pyhitystä kuin kaikki ulkonainen loisto.
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade

Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.

Let us accompany you on the journey of exploring knowledge and


personal growth!

ebooknice.com

You might also like