3C科技 娛樂遊戲 美食旅遊 時尚美妝 親子育兒 生活休閒 金融理財 健康運動 寰宇綜合

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
OPENCV KNN 手寫數字辨識 ~ opencv249_knn_digital_number01[從原圖產生KNN所需訓練圖檔]-彩色轉灰階cvtColor、圖片定位+切割copyTo、圖片存檔imwrite 資料來源: https://blog.csdn.net/chaipp0607/article/details/77966888 https://blog.csdn.net/akadiao/article/details/79243651 https://blog.csdn.net/akadiao/article/details/79236458 GITHUB: https://github.com/jash-git/opencv249_knn_digital_number https://github.com/jash-git/CB_OpenCV249_ML #include #include #include #include #include #include #include #if defined(WIN32) #define TIMEB _timeb #define ftime _ftime typedef __int64 TIME_T; #else #define TIMEB timeb typedef long long TIME_T; #endif using namespace cv; using namespace std; void Pause() { printf("Press Enter key to continue..."); fgetc(stdin); } int main() { char ad[128]={0}; int filename = 0,filenum=0; Mat img = imread("input.png"); Mat gray; cvtColor(img, gray, CV_BGR2GRAY); int b = 20; int m = gray.rows / b; //原图为1000*2000 int n = gray.cols / b; //裁剪为5000个20*20的小图块 for (int i = 0; i < m; i++) { int offsetRow = i*b; //行上的偏移量 if(i%5==0&&i!=0) { filename++; filenum=0; } for (int j = 0; j < n; j++) { int offsetCol = j*b; //列上的偏移量 sprintf(ad, "data\\%d\\%d.jpg",filename,filenum++); //截取20*20的小块 Mat tmp; /* 访问cv::Mat m中点(i0, j0,)和点(i1-1, j1-1)围成的矩形范围 cv::Mat m0 = m(cv::Range(i0, i1), cv::Range(j0, j1)) */ gray(Range(offsetRow, offsetRow + b), Range(offsetCol, offsetCol + b)).copyTo(tmp); /* ps: 访问cv::Mat m的第i行 cv::Mat m0 = m.row(i) 访问cv::Mat m的第j列 cv::Mat m0 = m.col(j) 访问cv::Mat m的第i0行到第i1-1行 cv::Mat m0 = m.rowRange(i0, i1) cv::Mat m0 = m.rowRange(cv::Range(i0, i1)) 访问cv::Mat m的第j0行到第j1-1列 cv::Mat m0 = m.colRange(j0, j1) cv::Mat m0 = m.colRange(cv::Range(j0, j1)) 访问cv::Mat m偏移量为d的对角线 cv::Mat m0 = m.diag(d) 访问cv::Mat m的矩形(i0, i1, w, h)范围 cv::Mat m0 = m(cv::Rect(i0, i1, w, h)) */ imwrite(ad,tmp); } } return 0; }

本文由jashliaoeuwordpress提供 原文連結

寫了 5860316篇文章,獲得 23313次喜歡
精彩推薦