System.Windows.Markup.XamlParseException

現象

プロジェクトをコピーして、アイコンを変更しているときに、次のエラーが発生するようになった。

System.Windows.Markup.XamlParseException
HResult=0x80131501
Message=’System.Windows.Baml2006.TypeConverterMarkupExtension’ の値の指定時に例外がスローされました。
Source=PresentationFramework
スタック トレース:
場所 System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri)

内部例外 1:
IOException: リソース ‘iconname.ico’ を検索できません。

なお、プロジェクトには、IconName.ico ファイルは存在している。

対応

Xaml の中で、

<Window
xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation”
…中略…
Closing=”Window_Closing” VerticalAlignment=”Top” Height=”302.5″ Width=”727″ SizeToContent=”WidthAndHeight” Icon=”IconName.ico”>

Icon=”IconName.ico” となっていた。
これを
Icon=”iconname.ico” と修正する。

原因

ファイル名をOriginalIconName.ico から、IconName.ico に変更した。これにあわせて、リファクタリングで、OriginalIconName.ico を IconName.ico に変換した。xaml も当然、IconName.ico に書き換えられた。ファイル名もIconName.icoなので、このままで良いはずだが、この書式は、大文字小文字を識別していて、なおかつ小文字に出ないとダメなようです。

AlertController / アクションシート

numpy で2次元配列化からスライス

実行結果
オリジナル配列
[[ 0 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]
[32 33 34 35 36 37 38 39]
[40 41 42 43 44 45 46 47]
[48 49 50 51 52 53 54 55]
[56 57 58 59 60 61 62 63]]

print(a[0:4, 0:4])
[[ 0 1 2 3]
[ 8 9 10 11]
[16 17 18 19]
[24 25 26 27]]

print(a[4:8, 0:4])
[[32 33 34 35]
[40 41 42 43]
[48 49 50 51]
[56 57 58 59]]

print(a[0:4, 4:8])
[[ 4 5 6 7]
[12 13 14 15]
[20 21 22 23]
[28 29 30 31]]

print(a[4:8, 4:8])
[[36 37 38 39]
[44 45 46 47]
[52 53 54 55]
[60 61 62 63]]

ビデオから、部分画像をスライス

Visual Studio Code + Python + opencv の環境メモ

OpenCV-Python を Windows でインストールする方法

前提として、次の場所にインストールしている。

  • D:\Program Files\Python37
  • D:\opencv
  • D:\ProgramData\Anaconda3

  1. Pythonをダウンロードして、インストールする
  2. Numpy を pip install numpyでインストール
  3. Matplotlib をpip install matplotlib でインストール。Matplotlib はオプショナルだが、チュートリアルでしばしば使われているため。
  4. import numpy を実行して、正常に動作することを確認
  5. OpenCV をインストール
  6. D:\opencv\build\python\cv2\python-2.7にある cv2.pyd をD:\Program Files\Python37\Lib\site-packages にコピーする
  7. Visual Studio CodeのPython terminalから、次のコマンドを実行し、確認
    >>> import cv2 as cv
    >>> print( cv.__version__ )

環境変数

  • D:\Program Files\Python37
  • D:\opencv\build\x64\vc15\bin
  • D:\ProgramData\Anaconda3\condabin
  • D:\ProgramData\Anaconda3\Library\bin

opencv のインストール

C:\opencv にインストール

pip install opencv-python でopencv をインストール。
pip install opencv-contrib-python で、opencvをインストール
f2py のPATHを追加してとメッセージが出ているが、FORTRANは使用しないので、無視。

pipの新しいバージョンがあるということで、python -m pip insatall -upgrade でアップグレードする。


WIndows Storeからインストールしたからか、 しかし、アクセス権がなくエラーとなる。
–user オプションを指定して、インストール実行。

Video データ処理

<!DOCTYPE html>
<html lang=”en”>
<head>
<meta charset=”UTF-8″>
<meta name=”viewport” content=”width=device-width, initial-scale=1.0″>
<meta http-equiv=”X-UA-Compatible” content=”ie=edge”>
<title>Document</title>
</head>
<body>
<script language=”javascript”>

function changeColor(newColor) {
var elem = document.getElementById(‘h1’);
elem.style.color = newColor;
}
function drawVideo(){
var video = document.getElementById(“v”);
var canvas = document.getElementById(“c”);
canvas.getContext(“2d”).drawImage(video, 0, 0, 480, 270);

}
function drawVideoBW(){
var video = document.getElementById(“v”);

setInterval(function(){
var canvas = document.getElementById(“c”);
var ctx = canvas.getContext(“2d”);
ctx.drawImage(video, 0, 0, canvas.width, canvas.height);

var src = ctx.getImageData(0, 0, canvas.width, canvas.height);
var dst = ctx.createImageData(canvas.width, canvas.height);

for (var i = 0; i < src.data.length; i=i+4) {
var y = ~~((src.data[i] + src.data[i + 1] + src.data[i + 2])/3);
src.data[i] = src.data[i+1] = src.data[i+2] = y;
src.data[i+3] = src.data[i+3];
}

ctx.putImageData(src, 0, 0);
}, 1000/30);
}
</script>

<h1 id=”h1″>Video 白黒化</h1>
<button onclick=”changeColor(‘blue’);”>blue</button>

<div>
<video id=v preload=’none’ onclick=’this.play();’ controls>
<source src=’test2.mp4′>
</video>
</div>
<div>
<button onClick=”drawVideo()”>Draw Color</button>
</div>
<div>
<button onClick=”drawVideoBW()”>Draw BW</button>
</div>
<div>
<canvas id=”c” width=”320″ height=”180″></canvas>
</div>
</body>
</html>