wafu3000の技術

勉強の記録です。

BitmapDecoderでサポートしている画像ファイルの一覧表示

BitmapDecoderを使用してみました。

 

このサイトのソースで、サポートしている画像がわかるようです。

c# - BitmapDecoder がサポートしている画像ファイルの種類(拡張子)を全て取得したい (.heicとか) - スタック・オーバーフロー

 

コンパイルするとエラーが表示されます。

 

note.obj : error LNK2019: 未解決の外部シンボル __imp__CoUninitialize@0 が関数 "public: __thiscall `int __cdecl main(void)'::`2'::Com::~Com(void)" (??1Com@?1??main@@YAHXZ@QAE@XZ) で参照されました。
note.obj : error LNK2019: 未解決の外部シンボル __imp__CoCreateInstance@20 が関数 _main で参照されました。
note.obj : error LNK2019: 未解決の外部シンボル __imp__CoInitialize@4 が関数 "public: __thiscall `int __cdecl main(void)'::`2'::Com::Com(void)" (??0Com@?1??main@@YAHXZ@QAE@XZ) で参照されました。
note.exe : fatal error LNK1120: 3 件の未解決の外部参照

 

■解決

#pragma comment(lib,"ole32.lib ")

を追加します。

 

結構サポートしていますね。

BMP Decoder: .bmp,.dib,.rle
GIF Decoder: .gif
ICO Decoder: .ico,.icon
CUR Decoder: .cur
JPEG Decoder: .jpeg,.jpe,.jpg,.jfif,.exif
PNG Decoder: .png
TIFF Decoder: .tiff,.tif
DNG Decoder: .dng
WMPhoto Decoder: .wdp,.jxr
DDS Decoder: .dds
Microsoft HEIF Decoder: .heic,.heif,.avci,.heics,.heifs,.avcs
Microsoft Webp Decoder: .webp
Microsoft Camera Raw Decoder: .ARW,.CR2,.CRW,.ERF,.KDC,.MRW,.NEF,.NRW,.ORF,.PEF,.RAF,.RAW,.RW2,.RWL,.SR2,.SRW,.DNG

dlibを使った顔認識

dlibを使えば、顔画像の認識ができるようです。

 

ちょっと、試してみました。

 

○環境

 Windows10 32ビットで動作するようにします。

 ※訳あって32ビットです。

 

順番は、このとおりです。

1 dlibのダウンロード

2 cmakeで、ファイルの作成

3 VS2017を使用してコンパイル

 

※参考サイトです。

Dlib 最新版のインストール(Windows 上)

 

1 dlibのダウンロード

dlib C++ Library

 

2 cmakeで、ソリューションファイルを作成します。

 cmakeをダウンロード

 

https://cmake.org/

 

cmake-3.15.0-rc4-win32-x86.msi

をダウンロードして、インストールします。

 

3 cmake

展開した「dlib-19.17」フォルダ内で、

 cmakeを実行します。

 「Project.sln」ファイルができるので、VS2017で開いて、ビルドします。

 「dlib\Release」フォルダ内に、

 「dlib19.17.0_release_32bit_msvc1910.lib」ファイルが、できあがります。

 

4 exampleのファイルを作ってみます。

exampleフォルダ内で、

 cmakeを実行します。

 何を思ったのか

 cmake -G "Visual Studio 15 2017" -T host=x86で実行しました。

 ※適当です。

 

 これで、exampleフォルダ内に、「face_detection_ex.exe」とか、できます。

 

5 実行

できました。

 

f:id:wafu3000:20190715211600p:plain

 

LinuxのUEFIをMBRへ変換

Linuxのバックアップを使用して、UEFIのパソコンからMBRのパソコンへ交換をしました。

 

対象はdebianのバックアップ

使用したのは、

・バックアップを保存するUSBメモリ

・手元にあったUbuntuの起動ディスク(インストール媒体)

debianのインストール媒体を使用したかも(これだけでいいのかな)

あまり、ネット上に情報がみつからなかったので、手さぐりになりました。

 

 

手順概要

1 dumpコマンドでバックアップ

2 restoreコマンドでリストア

3 パッケージのインストール

4 MBRのインストール

 

1 dumpコマンドでバックアップ

  UEFIのマシンでdumpコマンドでバックアップを作成します。

  USBメモリを接続して、ext3でフォーマットしてマウント

  ext4の場合は、エラーになったので下記のコマンド

   sudo mount -t ext4 -o ro,noload /dev/sdb1 /mnt

 

2 パーティションの作成

  ubuntuの起動ディスクでパーティションの作成

 

3 restoreコマンドでリカバリ

  USBメモリと作成したパーティションをマウント

  リカバリ

 

4 fstabを修正 

 リカバリした/etc/fstabの内容は、UUIDで記述されているので、/dev/sda0のように修正をする。

 

5 パッケージのインストール

  ※忘れました。

   ubuntuのコマンドで実行したのか、debianのインストールCDで修復にしたかもしれません。

  apt-get install grub-pc

  grub-install /dev/sda

 

無事、MBRへ変更できました。

 

RaspberryPIでWiFiルータ

RaspberryPIwifiルータ で、Wi-Fiルータを構築

 

□資機材

使用したのは初代のRaspberryPiです。

初代のRaspberryPiには、無線LAN機能はありません。

なので、USBの無線LANアダプタを使用します。

 

□使用するソフト

hostapdを使用してWi-Fiの基地にします。

 

1 パッケージのインストール

 sudo apt-get install hostapd dnsmasq isc-dhcp-server iw rng-tools

 

2 ネットワークの設定

 sudo vi /etc/network/interfaces 

 

 以下の設定を追加 

 auto eth0
 iface eth0 inet manual
 address 192.168.0.112
 netmask 255.255.255.0
 gateway 192.168.0.1

 auto wlan0
 allow-hotplug wlan0
 iface wlan0 inet static
 #wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
 address 192.168.2.1
 netmask 255.255.255.0

3 dhcpサーバの設定(1)

 sudo vi /etc/dhcp/dhcpd.conf 
 以下を設定ファイルに追加 

 subnet 192.168.2.0 netmask 255.255.255.0 { 
     range 192.168.2.10 192.168.2.50; 
     option broadcast-address 192.168.2.255; 
     option routers 192.168.2.1; 
     default-lease-time 600; 
     max-lease-time 7200; 
     option domain-name "local"; 
     option domain-name-servers 8.8.8.8, 8.8.4.4; 
    } 

 

4 dhcpサーバの設定(2)

  sudo vi /etc/default/isc-dhcp-server

  以下を変更する

  INTERFACES="wlan0" 

 

5 dhcpサーバ起動設定

  isc-dhcp-server起動 

 $ sudo service isc-dhcp-server start 
 

 起動設定 

 $ sudo update-rc.d isc-dhcp-server enable 


 6 Wi-Fi APの設定

  $ sudo vi /etc/hostapd/hostapd.conf

 ファイルはないので、新規に作成する。

 interface=wlan0
 driver=nl80211
 ssid=mynet
 hw_mode=g
 channel=6
 macaddr_acl=0
 auth_algs=1
 ignore_broadcast_ssid=0
 wpa=2
 wpa_passphrase=raspberry
 wpa_key_mgmt=WPA-PSK
 rsn_pairwise=CCMP

 

 deriverの記述に注意する

 今回、使用したのはbuffaloのアダプタを使用しました。

 demsgで確認するとrt2800usbでした。

 その場合は、nl80211にすると認識しました。

 

7 ルーティング設定(1)

 ルータなので、マスカレードの設定が必要です。

 $ sudo vi /etc/sysctl.conf 
  以下のコメントアウトを省きます。

 # Uncomment the next line to enable packet forwarding for IPv4 
 net.ipv4.ip_forward=1 

 

8 ルーティングの設定(2)

$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 
$ sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT 
$ sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT 
$ sudo iptables-save | sudo tee /etc/iptables.ipv4.nat 
$ echo 'pre-up iptables-restore < /etc/iptables.ipv4.nat' | sudo tee -a /etc/network/interfaces 

 

9 hostapの起動

  $ sudo service hostapd start 
  起動設定 

  $ sudo update-rc.d hostapd enable 

10 再起動

 エラーが出ていなければ、再起動する。

 

 

gemのエラー

久しぶりにrubyを使っていて、アップデートしようとしたらエラーです。

調べても原因がわかりません。

 

ERROR:  While executing gem ... (Errno::EADDRNOTAVAIL)

    The requested address is not valid in its context. - connect(2) for "0.0.0.0" port 53

 

■結果

Windowsのネットワークのエラーでした。

ネットワークのアイコンを診断したら、「dhcpがなんとか」って出てきて、自動で修復されました。

wimaxと光

光接続とwimaxで、悩みました。

なので、比較してみました。

 

■結果

wimaxの通常速度は、光より遅いけど十分早い

 

気になる10G制限後は・・・

 無理・・・

 頑張れば、頑張るほど遅くなります。

 ホームページの表示は問題ありません。・・・

 ちょっともたつく?

 画像が無理・・・

 

ただ、10Gを超える人は、動画をよく見る人や大きなファイルをダウンロードする人です。

私は無理なようです。

esedbの読み込み(1)

少し、プログラムの勉強です。

 

Microsoft Edgeの履歴は、WebCacheV01.datファイルに保存されています。

環境により、名前はWebCacheV24.datかもしれません。

 

ファイルの内容は、NiirSoftnのESEDataBaseViewで内容を確認できます。

http://www.nirsoft.net/utils/ese_database_view.html

 

 

このファイル、直接読む方法が気になっていましたが、発見できました。

JetがつくAPIを使えば操作できます。

 

MicrosoftAPI等の情報があります。

https://msdn.microsoft.com/ja-jp/library/gg294044(v=exchg.10).aspx

JetSetSystemParameter等のAPIの操作で可能です。

 

//データベースのオープン処理

JetAttachDatabase(sesid,InFile,JET_bitDbReadOnly);
JetOpenDatabase(sesid,InFile,0 , &dbid, JET_bitDbReadOnly);