91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 32.48MB
    文件類型: .rar
    金幣: 1
    下載: 0 次
    發(fā)布日期: 2023-06-13
  • 語言: 其他
  • 標(biāo)簽:

資源簡(jiǎn)介

基于opencv-KNN最鄰近算法實(shí)現(xiàn)手寫數(shù)字識(shí)別,使用Qt做UI實(shí)現(xiàn)手寫板,可以實(shí)時(shí)測(cè)試,資源包含源代碼和可執(zhí)行程序(release文件夾下的exe文件可以直接運(yùn)行)

資源截圖

代碼片段和文件信息

#include?“Knn.h“

Knn::Knn(QWidget?*parent)
:?QWidget(parent)
{
ui.setupUi(this);

ui.bRecognize->setEnabled(false);
connect(ui.bTrain ?SIGNAL(clicked())?this?SLOT(onTrain()));
connect(ui.bRecognize ?SIGNAL(clicked())?this?SLOT(onRecognize()));
connect(ui.bClear ?SIGNAL(clicked())?this?SLOT(onClearImage()));
onClearImage();
}

void?Knn::onTrain(){

Mat?digitsSet?=?imread(“digits.png“);
Mat?gray;
cvtColor(digitsSet?gray?CV_BGR2GRAY);

threshold(gray?gray?0?255?CV_THRESH_BINARY);
//?digits.png為2000?*?1000,其中每個(gè)數(shù)字的大小為20?*?20,則總共有5000((2000*1000)?/?(20*20))個(gè)數(shù)字
//?對(duì)其分割成單個(gè)20?*?20的圖像并序列化成(轉(zhuǎn)化成一個(gè)一維的數(shù)組)
int?side?=?20;
int?m?=?gray.rows?/?side;
int?n?=?gray.cols?/?side;
Mat?data?labels;
for?(int?i?=?0;?i?
ui.lState->setText(QString(“Trainning?%1“).arg(i/5));

int?offsetRow?=?i?*?side;
for?(int?j?=?0;?j?
int?offsetCol?=?j?*?side;
//?截取20*20的小塊
Mat?tmp;
gray(Range(offsetRow?offsetRow?+?side)?Range(offsetCol?offsetCol?+?side)).copyTo(tmp);
data.push_back(tmp.reshape(0?1));??//?序列化轉(zhuǎn)換成一個(gè)一維向量
labels.push_back(i?/?5);

QImage?image?=?CvMat2QImage(tmp);
QPixmap?pixmap?=?QPixmap::fromImage(image);
ui.label->setPixmap(pixmap.scaled(ui.label->size()));
sleep(1);
}
}
data.convertTo(data?CV_32F);

//?使用KNN算法訓(xùn)練
int?K?=?51;
Ptr?tData?=?TrainData::create(data?ROW_SAMPLE?labels);
model?=?KNearest::create();
model->setDefaultK(K);
model->setIsClassifier(true);
model->train(tData);

ui.bRecognize->setEnabled(true);
ui.bTrain->setEnabled(false);
ui.lState->setText(“Train?OK!“);
}

void?Knn::onRecognize(){

ui.bRecognize->setEnabled(false);
Mat?zoom;
zoom?=?zoomImage(0.1?frame);
Mat?reshapeImage?=?zoom.reshape(0?1);
reshapeImage.convertTo(reshapeImage?CV_32F);
float?r?=?model->predict(reshapeImage);???
ui.labelResult->setText(QString(“%1“).arg(r));
ui.bRecognize->setEnabled(true);
}

void?Knn::onClearImage(){

frame?=?Mat::zeros(200?200?CV_8UC1);
QImage?image?=?CvMat2QImage(frame);
QPixmap?pixmap?=?QPixmap::fromImage(image);
ui.label->setPixmap(pixmap.scaled(ui.label->size()));
}

QImage?Knn::CvMat2QImage(const?cv::Mat&?mat){

if?(mat.type()?==?CV_8UC1){

QImage?image(mat.cols?mat.rows?QImage::Format_Indexed8);
image.setColorCount(256);
for?(int?i?=?0;?i? image.setColor(i?qRgb(i?i?i));
}
uchar?*pSrc?=?mat.data;
for?(int?row?=?0;?row? uchar?*pDest?=?image.scanLine(row);
memcpy(pDest?pSrc?mat.cols);
pSrc?+=?mat.step;
}
return?image;
}
else?if?(mat.type()?==?CV_8UC3){

const?uchar?*pSrc?=?(const?uchar*)mat.data;
QImage?image(pSrc?mat.cols?mat.rows?mat.step?QImage::Format_RGB888);
return?image.rgbSwapped();
}
else?if?(mat.type()?==?CV_8UC4){

const?uchar?*pSrc?=?(const?uchar*)mat.data;
QImage?image(pSrc?mat.cols?mat.rows?mat.step?QIma

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----

?????文件???????1463??2018-03-28?16:22??KNN數(shù)字識(shí)別\Knn\Debug\Knn.Build.CppClean.log

?????文件?????????86??2018-03-28?16:22??KNN數(shù)字識(shí)別\Knn\Debug\Knn.log

?????文件?????721129??2014-11-06?08:49??KNN數(shù)字識(shí)別\Knn\digits.png

?????文件???????1372??2018-03-28?16:24??KNN數(shù)字識(shí)別\Knn\GeneratedFiles\qrc_Knn.cpp

?????文件???????3681??2018-03-28?16:24??KNN數(shù)字識(shí)別\Knn\GeneratedFiles\Release\moc_Knn.cpp

?????文件???????5495??2018-03-28?16:29??KNN數(shù)字識(shí)別\Knn\GeneratedFiles\ui_Knn.h

?????文件???????5341??2018-03-28?16:20??KNN數(shù)字識(shí)別\Knn\Knn.cpp

?????文件???????1244??2018-03-28?16:04??KNN數(shù)字識(shí)別\Knn\Knn.h

?????文件?????????63??2018-03-27?14:41??KNN數(shù)字識(shí)別\Knn\Knn.qrc

?????文件???????4780??2018-03-28?16:29??KNN數(shù)字識(shí)別\Knn\Knn.ui

?????文件??????10438??2018-03-28?16:24??KNN數(shù)字識(shí)別\Knn\Knn.vcxproj

?????文件???????2910??2018-03-27?14:41??KNN數(shù)字識(shí)別\Knn\Knn.vcxproj.filters

?????文件????????713??2018-03-28?08:09??KNN數(shù)字識(shí)別\Knn\Knn.vcxproj.user

?????文件????????177??2018-03-27?14:40??KNN數(shù)字識(shí)別\Knn\main.cpp

?????文件???????4273??2018-03-28?16:29??KNN數(shù)字識(shí)別\Knn\Release\Knn.log

?????文件?????200837??2018-03-28?16:29??KNN數(shù)字識(shí)別\Knn\Release\Knn.obj

?????文件???????6198??2018-03-28?16:29??KNN數(shù)字識(shí)別\Knn\Release\Knn.tlog\cl.command.1.tlog

?????文件?????124022??2018-03-28?16:29??KNN數(shù)字識(shí)別\Knn\Release\Knn.tlog\CL.read.1.tlog

?????文件????????690??2018-03-28?16:29??KNN數(shù)字識(shí)別\Knn\Release\Knn.tlog\CL.write.1.tlog

?????文件???????2092??2018-03-28?16:29??KNN數(shù)字識(shí)別\Knn\Release\Knn.tlog\custombuild.command.1.tlog

?????文件????????402??2018-03-28?16:29??KNN數(shù)字識(shí)別\Knn\Release\Knn.tlog\custombuild.read.1.tlog

?????文件????????510??2018-03-28?16:29??KNN數(shù)字識(shí)別\Knn\Release\Knn.tlog\custombuild.write.1.tlog

?????文件????????154??2018-03-28?16:29??KNN數(shù)字識(shí)別\Knn\Release\Knn.tlog\Knn.lastbuildstate

?????文件???????1736??2018-03-28?16:29??KNN數(shù)字識(shí)別\Knn\Release\Knn.tlog\link.command.1.tlog

?????文件???????3800??2018-03-28?16:29??KNN數(shù)字識(shí)別\Knn\Release\Knn.tlog\link.read.1.tlog

?????文件????????420??2018-03-28?16:29??KNN數(shù)字識(shí)別\Knn\Release\Knn.tlog\link.write.1.tlog

?????文件?????113609??2018-03-28?16:29??KNN數(shù)字識(shí)別\Knn\Release\main.obj

?????文件?????112845??2018-03-28?16:29??KNN數(shù)字識(shí)別\Knn\Release\moc_Knn.obj

?????文件???????2137??2018-03-28?16:24??KNN數(shù)字識(shí)別\Knn\Release\qrc_Knn.obj

????..A..H.????????42??2018-03-28?15:46??KNN數(shù)字識(shí)別\Knn.opensdf

............此處省略40個(gè)文件信息

評(píng)論

共有 條評(píng)論

相關(guān)資源