mieki256's diary



2016/08/08(月) [n年前の日記]

#1 [raspberrypi] Raspberry Piの Camera Module V2 の画質を確認

Raspberry Piは、専用のカメラモジュールも販売されているのだけど。

「カメラモジュールV1用の部品がもう入手できなくなったから、もっとゴイスなSONY製センサをゲットしてV2を作ったよ」と謳いながらも、フォーカスが無限遠になってなくて風景を撮ったりするとピンぼけになる、という話があって。…や、「初期ロットはそういうフォーカスになってたけど、これから作るロットは無限遠にフォーカス合わせてから出荷する予定ではあるッス」てな話も出てたようだけど。

自分が持ってるカメラモジュールV2は、 _KSY さんから2016/07/10頃に購入した個体。コレは初期ロット版なのか、風景を撮るとピンぼけになっちゃうのか気になってたわけで。ということで近所で撮影してきたり。

比較対象は、Canon製コンパクトデジカメ _Canon PowerShot A3300 IS

撮影画像を Dropboxに 置いときます。

_Raspberry Pi3 + Camera Module V2 (1)
_Canon Powershot A3300 IS (1)
_Raspberry Pi3 + Camera Module V2 (2)
_Canon Powershot A3300 IS (2)
_Raspberry Pi3 + Camera Module V2 (3)
_Canon Powershot A3300 IS (3)
_Raspberry Pi3 + Camera Module V2 (4)
_Canon Powershot A3300 IS (4)

comparison_image_01.png

comparison_image_02.png

comparison_image_03.png


一応ぼんやりと予想はしてたけど、まさかここまでピンボケ状態とは…。KSYさんから購入したコレって、おそらく初期ロットだよな…。違うのかな…。「これでも無限遠に合わせてあるのです」とか言われてしまった日には途方に暮れるけど…。

や、比較してる PowerShot A3300 IS が良すぎるのかもしれんけど。と言っても、PowerShot A300 IS って、価格や位置付けからしても正直そんなに良いデジカメってわけでも…。一眼レフデジカメを使ってる人達なら「そんな低価格コンデジと画質比較してどうすんだ。どうせ目糞鼻糞だろ」と言い出すランクのデジカメ、じゃないのかなと。しかしそこはさすがにCanon製品、なのだろうか。

何にせよ、Raspberry PiのカメラモジュールV2は、このままだとトイデジカメレベル。困った。こんな画質では目的が果たせぬ…。

フォーカスを調整できないものか。 :

_2016/07/15の日記 にもメモしたけど。海外の掲示板では、レンズ部分を回すことでフォーカスが調整できなくもない、という話が出ていたようなので、自分もチャレンジしてみようかと。

しかしこれが上手く行かない。4時間半も格闘したけど酷い結果に。
  • ダイソーで購入した、厚さ0.75mmのPPシートをくり抜いて、レイズ部分を回すためのレンズスパナっぽいものを作ってみたけど。PPシートは柔らかすぎるのか、レンズ部分が全然回ってくれなかった。PPシートじゃダメだ…。
  • そもそもレンズ部分は、3ヶ所ほど、接着剤っぽい透明な粒で固定されてるっぽい。デザインナイフ(デザインカッター)で、その粒を削り取れないか挑戦。
  • ミス連発。レンズ部分の外枠がどんどんボロボロに。とうとう十字の出っ張りすら消滅してしまった…。
  • それでも、レンズ部分はビクともしない。
どこでどうなってるんだコレ。

_ボロボロになったカメラモジュールの写真

それでもようやく、ピンセットでレンズ部分をギューッと押し込みながら挟んだ状態で、ジリジリと回せる状態にはなった。…コレ、ホントにここまで力を入れないと回せないものなのかな…。うっかりするとピンセットが外れて、レンズの上を「ガッ!」と削ってしまう。ヒヤヒヤモノ。とても頻繁に調整できる状態ではないなと。

しかし今度は、回す方向が分からん…。時計回りと反時計回り、どちらに回せば遠くにフォーカスが合うのか…。

フツーのWebカメラ ―― マニュアルでフォーカスリングとやらを回して調整するタイプのWebカメラではどうなってるのかググってみたけど。
  • 時計方向に回すと遠くにフォーカスが合う。
  • 反時計方向に回すと近くにフォーカスが合う。
一般的にはそういう製品が多いようで。ただ、それはネジの切り方によるだろうと。Raspberry Pi のカメラモジュールV2が逆にネジを切ってたら、逆に回さないといけないだろうし。「ピントがどこに合うかなんて回してるうちに分かるんじゃないの」と安易に言われそうだけど、てめえ実際やってみろよ分かんねえよ画面見ながらスルスルと何度も回せるもんじゃないし、みたいな。

一応、時計回りにするとコレ以上回せない感じになって、反時計回りにすると意外とある程度は回していける感じなので、おそらく反時計回りが「緩める」方向なのだろうと想像するのだけど。全く自信無し。

回してて気が付いたけど、コレ、センサに対してレンズが平行になってないというか、位置が合ってない気がする…。画面の隅がボケっぱなしというか…。「カメラモジュールV2は斜めになってる」と海外の掲示板で話が出ていて、「『斜め』ってのは一体何のことだろう」と疑問に思ったけど、コレのことかな…。

2017/03/19追記。 :

DropboxのPublicフォルダが死んだので自宅サーバに画像を置き直し。

#2 [zatta] 三脚が壊れた

たまに使ってる三脚、SLIK SDV-540 を部屋の片隅から引っ張り出してきて使おうとしたら、カメラを横方向に回転・固定するところのネジに被せてあるプラスチック製の取っ手がバキッ、と割れてしまった。経年劣化でプラスチックが脆くなってたのかな…。

修理できないかと、ダイソーで購入したプラスチック専用接着剤を発掘してくっつけてみたけど、力がかかる部分なので、たぶん直せたように見えてもまたバキッといきそうな気がするわけで。

とりあえず三脚が無いと各種実験ができないので、親父さんに余ってる三脚がないか尋ねてみたところ、「余ってるわけでは無くてたまに使うこともあるのだけど常時必ず使ってるわけでもない」扱いの三脚を一つ貸してもらえた。とりあえず当面は、新しい三脚を買わずに済みそう。

でも、一つ持っておいたほうが都合がいいのだよな…。親父さんの持ってる三脚は、どれも重くて頑丈なので、自転車のカゴに入れて気軽に持ち出すわけにもいかんし。

#3 [nitijyou] 自転車で買い物に

電動自転車を借りてケーズデンキとザ・ビッグまで。

ケーズデンキで三脚を探してみたけど、1,980円ぐらいのソレはあったものの、SLIK SDV-540とクリソツな形状で。これだとカメラが傾くんだよな…。2,980円の品なら傾かずに済みそうだけど、若干重くなる…。

ザ・ビッグに向けて走ってる最中、雨が降ってきた。降水確率は10%だったはずだけど、運が悪い。しかも店に着いたら雨が止んで。さらに、買い物を終えたら外は土砂降りの雨。

三脚は壊れるし、外出したタイミングで雨は降るし、Raspberry Piのカメラモジュールはピンボケだし。踏んだり蹴ったり。

#4 [raspberrypi][ubuntu][python] Vimを設定その2

vim でプラグインを管理するなら NeoBundle ではなく dein を使うのがこれからのトレンド、という話になってるらしいので、昨日 NeoBundle で環境を作ったばかりだけど dein に移行してみたり。

環境は以下。

deinを導入。 :

_dein.vimのインストール自体にハマってしまったメモ - Qiita を参考にして作業。

今まで設定した ~/.vimrc をリネームバックアップしてから中身をクリア。
cp ~/.vimrc ~/.vimrc.old
rm ~/.vimrc
touch ~/.vimrc

dein をインストール。git が必要なので、sudo pat-get install git で事前に入れておく。
mkdir ~/.cache/dein
cd ~/.cache/dein
curl https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh > installer.sh
sh ./installer.sh ~/.cache/dein
インストール場所は色々な事例があるらしいけど…。ひとまず ~/.cache/dein にしてみたり。

インストール直後に「以下の記述を ~/.vimrc に書け」とメッセージが表示されるので、~/.vimrc にコピペ。ただし、各環境に合わせた内容が表示されるので、巷の解説ページのソレをコピペするのではなく、インストールスクリプトが表示した内容をコピペすること。
"dein Scripts-----------------------------
if &compatible
  set nocompatible               " Be iMproved
endif

" Required:
set runtimepath^=/home/mieki256/.cache/dein/repos/github.com/Shougo/dein.vim

" Required:
call dein#begin(expand('/home/mieki256/.cache/dein'))

" Let dein manage dein
" Required:
call dein#add('Shougo/dein.vim')

" Add or remove your plugins here:
call dein#add('Shougo/neosnippet.vim')
call dein#add('Shougo/neosnippet-snippets')

" You can specify revision/branch/tag.
call dein#add('Shougo/vimshell', { 'rev': '3787e5' })

" Required:
call dein#end()

" Required:
filetype plugin indent on

" If you want to install not installed plugins on startup.
if dein#check_install()
  call dein#install()
endif

"End dein Scripts-------------------------

注意点。最後のあたりの3行のコメントアウトを外しておく。ココを外しておかないと、各プラグインがインストールされない。
"if dein#check_install()
" call dein#install()
"endif

↓

if dein#check_install()
 call dein#install()
endif

vimを起動すると自動でプラグインをインストールしてくれる。

dein を使っていて、各プラグインを無効にしたい際は…。よく分かってないけど、~/.vimrc の該当行をコメントアウト等した後で、vim を起動後、以下を打ったりすれば反映されるらしい。
:call dein#clear_state()
:call dein#update()
どういう意味のコマンドなのかよく分かってない。

Python2.x対応のVimを選ぶ。 :

jedi-vim なるプラグインを使うと、vim で Pythonスクリプトを書く時に色々補完してくれるらしい。導入を試みたい。

しかし、Ubuntu の場合、vim-gnome や vim-nox は Python3 が有効になっているので、jedi-vim が動いてくれないっぽい。Python2が有効になっている vim を使えば jedi-vim が動くようだけど、その場合は、vim-gnome-py2 や vim-nox-py2 をインストールしないといかんらしい。
sudo aptitude install vim-gnome-py2
sudo aptitude install vim-nox-py2

ただ、インストールしただけでは py2版に切り替わらない。update-alternatives で、どの版を使うか選ぶ必要があるっぽい。
$ sudo update-alternatives --config vim
alternative vim (/usr/bin/vim を提供) には 3 個の選択肢があります。

  選択肢    パス                  優先度  状態
------------------------------------------------------------
* 0            /usr/bin/vim.gnome       60        自動モード
  1            /usr/bin/vim.basic       30        手動モード
  2            /usr/bin/vim.gnome       60        手動モード
  3            /usr/bin/vim.gnome-py2   59        手動モード

現在の選択 [*] を保持するには <Enter>、さもなければ選択肢の番号のキーを押してください:

$ sudo update-alternatives --display vim
vim - 手動モード
  link best version is /usr/bin/vim.gnome
  リンクは現在 /usr/bin/vim.gnome-py2 を指しています
  link vim is /usr/bin/vim
/usr/bin/vim.basic - 優先度 30
/usr/bin/vim.gnome - 優先度 60
/usr/bin/vim.gnome-py2 - 優先度 59

ちなみに、Raspberry Pi 上の vim-gnome は、Python2有効/Python3無効、でビルドされてた。UbuntuのようにPython3への移行をゴリ押ししてる状態ではない模様。

以下参考ページ。

_標準で使うコマンドを切り替えるコマンドalternativesを使ってみた - ケーズメモ
_Ubuntu 16.04 リリースノート 日本語訳 - Qiita

jedi-vim をインストール。 :

Ubuntuの場合、apt-get でインストールできるらしいのだが…。
$ sudo aptitude search vim-python-jedi
i   vim-python-jedi                               - autocompletion tool for Python - VIM addon files      

$ sudo aptitude install vim-python-jedi
インストール出来てるのかどうか、よく分からない。

dein を導入した vim で、~/.vimrc に記述してインストールしてみる。以下を、call dein#begin と call dein#end の間に追加。
call dein#add('davidhalter/jedi-vim')
vim を起動したらインストールされたっぽい。

巷の解説記事によると、以下もしておく必要があるらしいので、一応しておく。
cd ~/.cache/dein/repos/github.com/davidhalter/jedi-vim/jedi/
git submodule update --init

dein と jedi-vim を使った場合の ~/.vimrc。 :

以下のような ~/.vimrc になった。
"dein Scripts-----------------------------
if &compatible
  set nocompatible               " Be iMproved
endif

" Required:
set runtimepath^=/home/mieki256/.cache/dein/repos/github.com/Shougo/dein.vim

" Required:
call dein#begin(expand('/home/mieki256/.cache/dein'))

" Let dein manage dein
" Required:
call dein#add('Shougo/dein.vim')

" Add or remove your plugins here:
call dein#add('Shougo/neosnippet.vim')
call dein#add('Shougo/neosnippet-snippets')
call dein#add('tpope/vim-fugitive')
call dein#add('ctrlpvim/ctrlp.vim')
call dein#add('flazz/vim-colorschemes')
call dein#add('Shougo/neocomplete.vim')
call dein#add('davidhalter/jedi-vim')
" call dein#add('Townk/vim-autoclose')

" You can specify revision/branch/tag.
call dein#add('Shougo/vimshell', { 'rev': '3787e5' })

" Required:
call dein#end()

" Required:
filetype plugin indent on

" If you want to install not installed plugins on startup.
if dein#check_install()
  call dein#install()
endif

"End dein Scripts-------------------------

filetype plugin on
set ignorecase
set smartcase
set incsearch
set hlsearch

set encoding=utf-8
set fileencoding=utf-8
set fileencodings=utf-8,cp932

" ----------------------------------------
"Note: This option must be set in .vimrc(_vimrc).  NOT IN .gvimrc(_gvimrc)!
" Disable AutoComplPop.
let g:acp_enableAtStartup = 0
" Use neocomplete.
let g:neocomplete#enable_at_startup = 1
" Use smartcase.
let g:neocomplete#enable_smart_case = 1
" Set minimum syntax keyword length.
let g:neocomplete#sources#syntax#min_keyword_length = 2
let g:neocomplete#lock_buffer_name_pattern = '\*ku\*'

" Define dictionary.
let g:neocomplete#sources#dictionary#dictionaries = {
    \ 'default' : '',
    \ 'vimshell' : $HOME.'/.vimshell_hist',
    \ 'scheme' : $HOME.'/.gosh_completions'
        \ }

" Define keyword.
if !exists('g:neocomplete#keyword_patterns')
    let g:neocomplete#keyword_patterns = {}
endif
let g:neocomplete#keyword_patterns['default'] = '\h\w*'

" Plugin key-mappings.
inoremap <expr><C-g>     neocomplete#undo_completion()
inoremap <expr><C-l>     neocomplete#complete_common_string()

" Recommended key-mappings.
" <CR>: close popup and save indent.
inoremap <silent> <CR> <C-r>=<SID>my_cr_function()<CR>
function! s:my_cr_function()
  return (pumvisible() ? "\<C-y>" : "" ) . "\<CR>"
  " For no inserting <CR> key.
  "return pumvisible() ? "\<C-y>" : "\<CR>"
endfunction
" <TAB>: completion.
inoremap <expr><TAB>  pumvisible() ? "\<C-n>" : "\<TAB>"
" <C-h>, <BS>: close popup and delete backword char.
inoremap <expr><C-h> neocomplete#smart_close_popup()."\<C-h>"
inoremap <expr><BS> neocomplete#smart_close_popup()."\<C-h>"
" Close popup by <Space>.
"inoremap <expr><Space> pumvisible() ? "\<C-y>" : "\<Space>"

" AutoComplPop like behavior.
"let g:neocomplete#enable_auto_select = 1

" Shell like behavior(not recommended).
"set completeopt+=longest
"let g:neocomplete#enable_auto_select = 1
"let g:neocomplete#disable_auto_complete = 1
"inoremap <expr><TAB>  pumvisible() ? "\<Down>" : "\<C-x>\<C-u>"

" Enable omni completion.
autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS
autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags
autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS
autocmd FileType python setlocal omnifunc=pythoncomplete#Complete
autocmd FileType xml setlocal omnifunc=xmlcomplete#CompleteTags

" Enable heavy omni completion.
if !exists('g:neocomplete#sources#omni#input_patterns')
  let g:neocomplete#sources#omni#input_patterns = {}
endif
"let g:neocomplete#sources#omni#input_patterns.php = '[^. \t]->\h\w*\|\h\w*::'
"let g:neocomplete#sources#omni#input_patterns.c = '[^.[:digit:] *\t]\%(\.\|->\)'
"let g:neocomplete#sources#omni#input_patterns.cpp = '[^.[:digit:] *\t]\%(\.\|->\)\|\h\w*::'

" For perlomni.vim setting.
" https://github.com/c9s/perlomni.vim
let g:neocomplete#sources#omni#input_patterns.perl = '\h\w*->\h\w*\|\h\w*::'

" ----------------------------------------
" python setting
autocmd FileType python setl autoindent
autocmd FileType python setl smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class
autocmd FileType python setl tabstop=8 expandtab shiftwidth=4 softtabstop=4

" ----------------------------------------
" jedi-vim setting
autocmd FileType python setlocal completeopt-=preview
autocmd FileType python setlocal omnifunc=jedi#completions
let g:jedi#auto_vim_configuration = 0
if !exists('g:neocomplete#force_omni_input_patterns')
    let g:neocomplete#force_omni_input_patterns = {}
endif
let g:neocomplete#force_omni_input_patterns.python = '\h\w*\|[^. \t]\.\w*'
let g:jedi#goto_assignments_command = "<C-g>"
let g:jedi#goto_definitions_command = "<C-d>"

長い…。

使用感。 :

VMware + Ubuntu 16.04 LTS では、この設定をしたvimもまだサクサク動いてるけど。Raspberry Pi3上では、vimの動作がちょっと厳しくなってきた。Pythonスクリプトを開いた際に、数秒ほど真っ暗な画面が表示される…。CPUパワーが無いので、解析に時間がかかってるのかもしれない。

ひょっとすると、Raspberry Pi3上では、jedi-vim は使わないほうがいいのかも。あるいは、メインPC上でエディタを使って書き換えるようにするか…。

以上、1 日分です。

過去ログ表示

Prev - 2016/08 - Next
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project