日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

qt画个灰度直方图

發(fā)布時(shí)間:2023/12/31 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 qt画个灰度直方图 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

步驟

  • 導(dǎo)入圖表庫(kù)
  • 在ui界面新建一個(gè)wight窗口并提升為那個(gè)圖表庫(kù)的類型
  • 寫函數(shù) 輸入?yún)?shù)是(圖表,待處理圖片)
  • 圖表的橫軸是像素值 從0-255 縱軸是此灰度的像素點(diǎn)數(shù)量或者占比
  • 所以要挨個(gè)判斷圖像里的每一個(gè)像素點(diǎn) 確認(rèn)灰度值之后計(jì)數(shù)
  • 然后用畫圖表的指令就可以了
  • 我下面為什么引用了 Qt:OpenCV::Mat與Qt::QImage相互轉(zhuǎn)換 的知識(shí)呢。。。因?yàn)橐婚_始我參考的例程導(dǎo)入的是qimage的圖片。我覺得mat可能好用一點(diǎn)。。。。結(jié)果發(fā)現(xiàn)我不用轉(zhuǎn),直接把圖片導(dǎo)入成mat格式來用就好了,我個(gè)憨憨。

    void MainWindow::graydata(QCustomPlot * plot, Mat img) {double yrange=0;QVector<double>datax;QVector<double>datay;plot->clearGraphs();datay.resize(256);//向量擴(kuò)容到256并填充為0 用來計(jì)數(shù)for (double i=0;i<256;i++) {datax.push_back(i);//x向量填0 1 ……255 作為橫坐標(biāo)}//QImage countimg=img->copy();unsigned char* data=img.data;//bits()直接返回圖像第一個(gè)字節(jié)的地址int width = img.rows-50;int hight = img.cols-50;//圖像邊緣隨手隔了50個(gè)像素不讀for (int i=50;i<hight;i++) {for (int j=50;j<width;j++) {datay[data[i*hight+j]]+=1;}}//y軸最大值QVector<double>::iterator it;for (it=datay.begin();it!=datay.end();it++) {if(*it>yrange)yrange=*it;}plot->xAxis->setRange(-5,260);plot->yAxis->setRange(0,(int)yrange);QCPBars *bars=new QCPBars(plot->xAxis,plot->yAxis);bars->setData(datax,datay);bars->setPen(QColor(0,0,0));plot->replot(); }

    QImage::Format這個(gè)方法可以查詢圖片的顏色類型
    Qt:OpenCV::Mat與Qt::QImage相互轉(zhuǎn)換

    假設(shè)存在一個(gè) 3\times3 的圖像,如下圖所示,數(shù)組x 統(tǒng)計(jì)的是像素點(diǎn)的灰度級(jí),數(shù)組y
    統(tǒng)計(jì)的是具有該灰度級(jí)的像素個(gè)數(shù)。其中,灰度為1的像素共3個(gè),灰度為2的像素共1個(gè),灰度為3的像素共2個(gè),灰度為4的像素共1個(gè),灰度為5的像素共2個(gè)。

    數(shù)字圖像處理(15): 灰度直方圖(matplotlib 和OpenCV
    繪制直方圖)

    QCustomPlot簡(jiǎn)單介紹和例程
    qt超強(qiáng)精美繪圖控件 - QCustomPlot一覽 及 安裝使用教程

    下面兩個(gè)鏈接 第一個(gè)說qimage格式有對(duì)齊,mat格式不用對(duì)齊
    第二個(gè)說 mat格式基本上不用對(duì)齊,但是也有需要對(duì)齊的時(shí)候。。。


    把QImage轉(zhuǎn)換為cv::Mat

    例如保存BMP格式的圖像時(shí),BMP要求圖像數(shù)據(jù)按四字節(jié)對(duì)齊,此時(shí)就需要對(duì)Mat中的數(shù)據(jù)進(jìn)行補(bǔ)零
    對(duì)齊方法就是在每一行尾部補(bǔ)零,零的個(gè)數(shù)可能是1~3個(gè)

    但其實(shí)大部分時(shí)候,Mat的內(nèi)存都是連續(xù)的,只有極個(gè)別時(shí)候需要擔(dān)心這個(gè)問題,這里有說明,和這里

    【學(xué)習(xí)OpenCV】Mat::data指針

    總結(jié)

    以上是生活随笔為你收集整理的qt画个灰度直方图的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。