アフィリエイト広告を利用しています
ファン
検索
<< 2023年12月 >>
          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            
最新記事
(12/20)KI cad インストールしてみよう
(04/11)【JAVA】チョロメを外部から動作させます。 幽霊が操作してるような
(07/29)spartan3 を cy7c68013 のバルクライトで シリアルコンフィグしてみた
(07/28)ブログ村に参加してみた。いまとのころブログ村からはだれもこない^^;
(07/28)PIC16F1503 を使ってみようかな?? MPLAB 内部クロック
(07/01)からっぽのつぎ のページ きっとはげ に なんか作用するかも
(05/06)GCEでワードプレス 第2 困ったのでやり直し手順
(05/05)https://certbot.eff.org/lets-encrypt/centosrhel7-apache をみてハマったこと
(04/28)フェドラ をつかって switchbot をアクセス する。  ? 未解決
(04/02)【オープンVPN】setsebool -P openvpn_enable_homedirs 1 でうごいた
(04/01)【QT5】わからないのでタイムアウトで自動でキャンセルボタン押すメッセージボックスつくってみた
(03/31)qt5よくわからんのだが メッセージボックスの OKスイッチをタイマーで押してみた。
(03/09)【boost】message queue 使い方 目も目も
(03/08)【バカの一つ覚え】ユニークID作成とそのちょっとした応用
(03/04)【パソコン】【GPIO】いったいこれは?
(02/26)【VHDL入門】ABZ信号から Hsync Vsyncを作り出してみよう その2
(02/26)【VHDL入門】ABZ信号から Hsync Vsyncを作り出してみよう その1
(02/26)【VHDL入門】速度比較 エンコーダーABZ相 ソースファイル付き
(02/25)【VHDL入門】ロータリーエンコーダABZ 出力のサンプル 200Mhz動作?
(02/23)【VHDL入門】UART 送受信繰り返しのテストベンチ作成してみたい
最新コメント
カテゴリーアーカイブ
プロフィール
有象無象さんの画像
有象無象
はげはじめました 禿増されます。励ましのコメントお待ちしてます。  
プロフィール

広告

posted by fanblog

2021年01月12日

Qt5 モノクロームをR,G,Bでそれぞれ表示する 高速^^;QTだからこそ?の裏技

前提 条件 RGBの cv:: Mat 形式が入力されたとする。
 これはうまくいった 話だ 読み進めるとあ〜だめだった みたいなことは ない 多分^^;
freevideo-2021-01-13-005936.gif

Matを 3チャネルでコピーして RGB をそれぞれ 表示すると時間がかかる
色別に 0をR 1をG 2をB 3をカラーとして
case 0:
planes[1]=Mat::zeros(matRGB.rows, matRGB.cols, CV_8UC1);//G
planes[2]=Mat::zeros(matRGB.rows, matRGB.cols, CV_8UC1);//B
merge(planes,matRGB);
break;

こんなことをすると 時間がかかるので 
cv::Mat matAlpha;
cv::Mat matRGB=matRGBinput.clone();

std::vector planes;
planes.clear();
cv::split(matRGB, planes);
switch(this->m_alpha)
{
case 0: matAlpha=planes[0];break;
case 1: matAlpha=planes[1];break;
case 2: matAlpha=planes[2];break;
}cv::bitwise_not(matAlpha, matAlpha);
で済ませる
     早い話がモノクロームで RGBそれぞれとる。
そもそもがMatは BGRの並びだが ここではRGBで入ってくるようにした。
 ちなみにBGR とRGBの入れ替えは
    cv::split(matRGB, planes);
 して 別のstd::vector planes2nd;
     planes2nd.pushback(planes[2]);
   planes2nd.pushback(planes[1]);
   planes2nd.pushback(planes[0]);
merge(planes2nd,matRGB);
だったかな 確認オネ 順番が違う。入れ替えればいい

if(this->m_alpha!=3){
QImage _Alpha = QImage(matAlpha.data, matAlpha.cols, matAlpha.rows, static_cast(matAlpha.step), QImage::Format_Alpha8);
QAlpha =_Alpha.copy();
}else
{
QImage tmpimg = QImage(matRGB.data, matRGB.cols, matRGB.rows, static_cast(matRGB.step), QImage::Format_RGB888);
tmpimg1 =tmpimg.copy();
}

 な感じで QTのアルファ にコピーする。
そして 背景色を  次のような感じで変更しておく
すると 背景色が 見えるので RGB の表示で 青はよくみえないので シアンで代替して表示させた。

switch (alpha) {
case 0:
m_QAlphaimageWidget->setStyleSheet("background-color:red");break;
case 1:
m_QAlphaimageWidget->setStyleSheet("background-color:green");break;
case 2:
m_QAlphaimageWidget->setStyleSheet("background-color:cyan");break;

break;
}





 これをQt5で 表示する。 表示用のウィジェット は こんなやつだとする。
 こいつは setImg( QImage &img ) されるとすぐに 表示をアップデートする。 やつだ
 
ImageWidget::ImageWidget(QWidget *parent ):QGraphicsView(parent)
{
}
ImageWidget::~ImageWidget()
{

}

void ImageWidget::paintEvent( QPaintEvent *event )
{ Q_UNUSED(event);
QPainter widgetpainter( viewport() );
// widgetpainter.setWorldTransform( m_matrix );

QImage qimg = m_img.scaled(
viewport()->width(),
viewport()->height(),
Qt::KeepAspectRatio,Qt::FastTransformation);
widgetpainter.drawImage( 0, 0, qimg );
}


void ImageWidget::setImg( QImage &img )
{
m_img = QImage( img );
viewport()->update();
}


まぁいいだろう。

blue2blue.png
blue2cyan.png


この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバックURL
https://fanblogs.jp/tb/10465300
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック
×

この広告は30日以上新しい記事の更新がないブログに表示されております。