【cpp】c++でコンソール文字化け UTF8とShiftJIS
cout << "あいうえお" << endl;
コンソール
a4sdytuygcid(文字化け)
ぶち●す!!!!!
問題点とその理由
プログラムの文字コードがUTF-8に対して、 windowsのコンソールの出力はShift-JISらしい。
消えろ!Shift-JIS!!!!
解決点とその結果
じゃあコンソールの出力をプログラムでセットしてから coutしましょうね。
解決したプログラム
// Set the code page of the output console to UTF-8 ::SetConsoleOutputCP(65001u);
解決した結果
できたー!!!うれぴー!!
【python】アルファ値をもつ画像から透明属性を除いて処理できるようにした【opencv】
透過画像にputtextするとバグる!!!!
色がおかしい、変な色になる、なんでじゃ!!
4チャンネルの確認
透明な画像の情報を持っている画像は色情報で4つの情報を持っている
ようするにピクセルに
位置x座標、y座標の2つと色情報のBlue,Green,Red,Alphaと4つの情報がある
たとえば切り抜きがひどいが透過画像のつぎのねこ
これの形はshapeでわかるので出力してみる
img = cv2.imread("./test.png",-1) print(img.shape)
とすれば
(336, 378, 4)
となってたしかに4チャンネルになっている。
問題点とその結果
問題のプログラム
cv2.puttextを実行しようとした。
import cv2 img = cv2.imread("./test.png",-1) h,w = img.shape[0],img.shape[1]#文字の配置場所決めのため、とくに今回不要だけどまあかいてみた cv2.putText(img, 'A', (int(w/2), int(h/2)), cv2.FONT_HERSHEY_PLAIN, 4, (0, 0, 255), 5, cv2.LINE_AA)#赤文字 cv2.imwrite('result.png', img)
問題の結果
result.png
何故か挙動がおかしい、(0, 0, 255) で赤を指定しているのに色がおかしいとか
解決点とその結果
opencvのリファレンスを見よう
描画関数 — opencv 2.2 documentation
ここをみると
これらの関数は,アルファ透過をサポートしません.目的画像が4チャンネルである場合でも color[3] には,単なるピクセル値がコピーされるだけです.したがって,もし半透明な形状を描画したい場合は,それを別のバッファに描画してから画像とブレンドするとよいでしょう.
まじか!
解決したプログラム
import cv2 import copy img = cv2.imread("./test.png",-1) img_3channel = copy.deepcopy(img[:,:,:3]) #3チャンネル分の抜き出し h,w = img.shape[0],img.shape[1]#文字の配置場所決めのため、とくに今回不要 cv2.putText(img_3channel, 'A', (int(w/2), int(h/2)), cv2.FONT_HERSHEY_PLAIN, 4, (0, 0, 255), 5, cv2.LINE_AA) img[:,:,:3] = img_3channel[:,:,:3]#アルファ値以外を加工画像から戻す cv2.imwrite('result.png', img)
解決した結果
4チャンネルの画像をかこうしてかつ透過情報ももったimgができあがりました
result.png
アルファ値を削ることなく opencvのputtext関数を用いたい場合は3チャンネルにもどしてからやるとよかったりした
ベースの指おくやつをお金をかけずにとりつけた
指おくやつは
フィンガーレスト
っていうんだって。
フィンガーレストをつける
買ったもの
これ買った。 SCUD フィンガーレスト F-REST ねじもついてるしいいかんじ
本体の穴あけ
位置決め
ドライバーで穴を軽くあける
ピックガードの穴あけ
ピックガードにも同じ位置で穴をあけたいけれど、 位置決めどうしようとなった結果、コピー用紙を使うことにした
ねじを貫通させて固定
3か所くらいこれをするとがしっと決まる
外枠を書いて、これに合わせるという目安を作る
位置合わせ
ドライバーで穴をあける
開いた
きちんと貫通している
完成
わーい!
【C#】chromedriverのコンソール画面とブラウザ画面を消し去る
ほんとうに邪魔、黒い画面
//オプションを準備 ChromeOptions options = new ChromeOptions(); //ヘッドレス追加、これでブラウザが消える options.AddArgument("--headless"); //これはchrome.exeのある場所をさす。たぶんデフォルトはここだけど基本的に不要 //options.BinaryLocation = @"C:\Program Files\Google\Chrome\Application\chrome.exe"; //黒い画面を消すためにサービスを準備 var driverService = ChromeDriverService.CreateDefaultService(); //これで黒い画面を消す driverService.HideCommandPromptWindow = true; //driverを作るときにかっこに設定をぶちこむ driver = new ChromeDriver(driverService,options);
これで消える 最高に気持ちいい