当前位置: 首页 > news >正文

哪个网站可以免费设计房子安徽康东建设工程有限公司网站

哪个网站可以免费设计房子,安徽康东建设工程有限公司网站,郑州免费做网站,wp网站做404自己写的demo记个笔记用 替换掉图片路径和保存路径svm训练的模型路径就可以跑 效果我觉的不行#xff0c;目前也不知到如何优化、希望有大佬可以给点建议 流程 处理超像素 选择超像素 提取HOG、颜色直方图、LBP直方图特征 训练 预测 #include iostream #include …自己写的demo记个笔记用 替换掉图片路径和保存路径svm训练的模型路径就可以跑 效果我觉的不行目前也不知到如何优化、希望有大佬可以给点建议 流程 处理超像素 选择超像素 提取HOG、颜色直方图、LBP直方图特征 训练 预测 #include iostream #include opencv2/opencv.hpp #include opencv2/ximgproc.hpp #include opencv2/ml.hppusing namespace cv; using namespace std; using namespace cv::ml; Mat g_LabelSlic; Mat g_MaskSlic; int g_NumSuperPixels;//目标图像和标签 multimapint, Matg_mapImgSuperPixelsOfTarget; multimapint, Matg_mapImgSuperPixelsOfNonTarget;struct MouseCallbackData {Mat img; // 原始图像Mat imgClone; // 克隆图像 };Mat GetSuperPixelsByLabel(const Mat img, int superpixelID) {int minX img.cols, minY img.rows, maxX 0, maxY 0;for (int y 0; y img.rows; y) {for (int x 0; x img.cols; x) {if (g_LabelSlic.atint(y, x) superpixelID) {// 更新边界框坐标if (x minX) minX x;if (y minY) minY y;if (x maxX) maxX x;if (y maxY) maxY y;}}}// 确保边界框有效if (minX maxX || minY maxY) {cout 未找到有效的超像素 endl;return Mat(); }Rect superPixelBoundingBox(minX, minY, maxX - minX 1, maxY - minY 1);Mat croppedRegion img(superPixelBoundingBox).clone(); for (int y 0; y croppedRegion.rows; y) {for (int x 0; x croppedRegion.cols; x) {int origX x minX;int origY y minY;if (g_LabelSlic.atint(origY, origX) ! superpixelID) {croppedRegion.atVec3b(y, x) Vec3b(0, 0, 0); }}}return croppedRegion; }vectorfloat GetHOGDescriptor(Mat img) {if (img.empty()) {std::cerr 输入图像为空 std::endl;return {};}resize(img, img, Size(64, 64));Mat imgGray;cvtColor(img, imgGray, COLOR_BGR2GRAY);HOGDescriptor hog(Size(32, 32), // 图像窗口大小Size(8, 8), // 块大小Size(4, 4), // 块步长Size(4, 4), // cell 大小9 // 梯度方向 bins 数);vectorfloat descriptors;hog.compute(imgGray, descriptors);return descriptors; }// 提取 LBP 特征及其直方图 void ExtractLBPFeatures(Mat img, Mat lbp, Mat lbpHist) {resize(img, img, Size(64, 64));// 转换为灰度图Mat gray;if (img.channels() 3) {cvtColor(img, gray, COLOR_BGR2GRAY);}else {gray img.clone();}// 初始化 LBP 特征矩阵lbp Mat(gray.size(), CV_8UC1, Scalar(0));for (int y 1; y gray.rows - 1; y) {for (int x 1; x gray.cols - 1; x) {uchar center gray.atuchar(y, x);uchar code 0;code | (gray.atuchar(y - 1, x - 1) center) 7; // 128code | (gray.atuchar(y - 1, x) center) 6; // 64code | (gray.atuchar(y - 1, x 1) center) 5; // 32code | (gray.atuchar(y, x 1) center) 4; // 16code | (gray.atuchar(y 1, x 1) center) 3; // 8code | (gray.atuchar(y 1, x) center) 2; // 4code | (gray.atuchar(y 1, x - 1) center) 1; // 2code | (gray.atuchar(y, x - 1) center); // 1lbp.atuchar(y, x) code; // 将计算的 LBP 值存储}}// 计算 LBP 直方图const int histSize 256; // LBP 特征值的范围const float range[] { 0, 256 };const float* histRange { range };calcHist(lbp, 1, 0, Mat(), lbpHist, 1, histSize, histRange);normalize(lbpHist, lbpHist); }Mat ExtractHSVHistogram(Mat img) {resize(img, img, Size(64, 64));Mat hsv_img;cvtColor(img, hsv_img, cv::COLOR_BGR2HSV); vectorcv::Mat hsv_planes;split(hsv_img, hsv_planes); // 分割 H, S, V 通道int histSize 256; // 直方图分为 256 个区间float h_range[] { 0, 180 }; // H 通道范围是 0-180float s_v_range[] { 0, 256 }; // S 和 V 通道范围是 0-256const float* h_histRange { h_range };const float* sv_histRange { s_v_range };Mat h_hist, s_hist, v_hist;calcHist(hsv_planes[0], 1, 0, cv::Mat(), h_hist, 1, histSize, h_histRange, true, false); // H 通道直方图calcHist(hsv_planes[1], 1, 0, cv::Mat(), s_hist, 1, histSize, sv_histRange, true, false); // S 通道直方图calcHist(hsv_planes[2], 1, 0, cv::Mat(), v_hist, 1, histSize, sv_histRange, true, false); // V 通道直方图// 合并 H, S, V 直方图Mat hist;hconcat(h_hist, s_hist, hist);hconcat(hist, v_hist, hist);Mat normalizedHist;normalize(hist, normalizedHist);return normalizedHist; // 返回归一化后的直方图 }void OnMouse(int event, int x, int y, int flags, void* param) {MouseCallbackData* data static_castMouseCallbackData*(param);Mat img data-img;Mat imgClone data-imgClone;int mouseButtonClicked 0;if (event EVENT_LBUTTONDOWN) {mouseButtonClicked 1;if (x 0 x img.cols y 0 y img.rows) {int superpixelID g_LabelSlic.atint(y, x);cout 点击目标超像素ID: superpixelID endl;g_mapImgSuperPixelsOfTarget.insert({ mouseButtonClicked, GetSuperPixelsByLabel(img, superpixelID) });circle(imgClone, Point(x, y), 3, Scalar(0, 255, 0), -1);imshow(Imageview, imgClone);}}else if (event EVENT_RBUTTONDOWN) {mouseButtonClicked 2;if (x 0 x img.cols y 0 y img.rows) {int superpixelID g_LabelSlic.atint(y, x);cout 点击非目标超像素ID: superpixelID endl;g_mapImgSuperPixelsOfNonTarget.insert({ mouseButtonClicked, GetSuperPixelsByLabel(img, superpixelID) });circle(imgClone, Point(x, y), 3, Scalar(0, 0, 255), -1);imshow(Imageview, imgClone);}} }void SvmClassifier(multimapint, vectorfloat HOGDescriptorOFTarget,multimapint, Mat lbpHistOFTarget,multimapint, Mat hsvHistOFTarget,multimapint, vectorfloat HOGDescriptorOFNonTarget,multimapint, Mat lbpHistOFNonTarget,multimapint, Mat hsvHistOFNonTarget) {cout star svm model train ... endl;Mat featureList;Mat labels;for (const auto pair : HOGDescriptorOFTarget) {Mat hogMat(pair.second, CV_32F);normalize(hogMat, hogMat, 0, 1, NORM_MINMAX);hogMat hogMat.reshape(1, 1);Mat lbpHist lbpHistOFTarget.find(pair.first)-second;lbpHist.convertTo(lbpHist, CV_32F);lbpHist lbpHist.reshape(1, 1); // 展平Mat hsvHist hsvHistOFTarget.find(pair.first)-second;hsvHist.convertTo(hsvHist, CV_32F);hsvHist hsvHist.reshape(1, 1); // 展平Mat combinedFeature;hconcat(hogMat, lbpHist, combinedFeature); hconcat(combinedFeature, hsvHist, combinedFeature); featureList.push_back(combinedFeature);labels.push_back(1); }for (const auto pair : HOGDescriptorOFNonTarget) {Mat hogMat(pair.second, CV_32F);normalize(hogMat, hogMat, 0, 1, NORM_MINMAX); hogMat hogMat.reshape(1, 1);Mat lbpHist lbpHistOFNonTarget.find(pair.first)-second;lbpHist.convertTo(lbpHist, CV_32F);lbpHist lbpHist.reshape(1, 1); Mat hsvHist hsvHistOFNonTarget.find(pair.first)-second;hsvHist.convertTo(hsvHist, CV_32F);hsvHist hsvHist.reshape(1, 1); Mat combinedFeature;hconcat(hogMat, lbpHist, combinedFeature);hconcat(combinedFeature, hsvHist, combinedFeature);featureList.push_back(combinedFeature);labels.push_back(0); }Mat trainingData;vconcat(featureList, trainingData); //Mat labelsMat;// Mat(labels).reshape(1, 1);Mat labelsMat labels;trainingData.convertTo(trainingData, CV_32F);labelsMat.convertTo(labelsMat, CV_32S);PtrSVM svm SVM::create();svm-setKernel(SVM::RBF);svm-setType(SVM::C_SVC);svm-trainAuto(trainingData,ROW_SAMPLE,labelsMat,10);/*svm-setC(1.5);svm-setGamma(0.5);svm-setTermCriteria(cv::TermCriteria(cv::TermCriteria::MAX_ITER, 200, 1e-6));svm-train(trainingData, ROW_SAMPLE, labelsMat);*/svm-save(C:/Users/svs/Desktop/svm_model2.xml); // 保存训练好的模型 }void DrawSuperpixelRegion(Mat img, int targetLabel) {for (int y 0; y img.rows; y) {for (int x 0; x img.cols; x) {if (g_LabelSlic.atint(y, x) targetLabel) {img.atVec3b(y, x) Vec3b(0, 255, 0); }}} }int main() {Mat img imread(C:/Users/svs/Desktop/test.jpeg);if (img.empty()) {cerr 无法读取图片 endl;return -1;}//图片进行超像素分割int region_size 50;float ruler 20.0;int num_iterations 100;Ptrximgproc::SuperpixelSLIC slic ximgproc::createSuperpixelSLIC(img, ximgproc::SLICO,region_size, ruler);slic-iterate(num_iterations);slic-getLabels(g_LabelSlic);slic-getLabelContourMask(g_MaskSlic);g_NumSuperPixels slic-getNumberOfSuperpixels();Mat imgWithContours;img.copyTo(imgWithContours, ~g_MaskSlic);imshow(Superpixel Contours, imgWithContours);cout 请点击选择一个超像素区域...\n;namedWindow(Imageview, WINDOW_AUTOSIZE);imshow(Image, img);Mat imgClone img.clone();imshow(Imageview, imgClone);MouseCallbackData data;data.img img;data.imgClone imgClone;setMouseCallback(Imageview, OnMouse, data);// 等待用户按 q 退出while (true) {const char key waitKey(0);if (key q) {break;}}/*提取获取图片的特征*/multimapint, vectorfloat HOGDescriptorOFTarget;multimapint, Mat lbpHistOFTarget;multimapint, Mat hsvHistOFTarget;multimapint, vectorfloat HOGDescriptorOFNonTarget;multimapint, MatlbpHistOFNonTarget;multimapint, MathisHistOFNonTarget;for (const auto pair : g_mapImgSuperPixelsOfTarget) {vectorfloat vectorHOGDescriptor GetHOGDescriptor(pair.second);HOGDescriptorOFTarget.insert({ pair.first, vectorHOGDescriptor});Mat lbpImg, lbpHist;ExtractLBPFeatures(pair.second, lbpImg, lbpHist);lbpHistOFTarget.insert({ pair.first, lbpHist });Mat hsvHist;hsvHist ExtractHSVHistogram(pair.second);hsvHistOFTarget.insert({ pair.first,hsvHist });/*imshow(true, pair.second);waitKey(0);*/}for (const auto pair : g_mapImgSuperPixelsOfNonTarget){vectorfloat vectorHOGDescriptor GetHOGDescriptor(pair.second);HOGDescriptorOFNonTarget.insert({ pair.first,vectorHOGDescriptor });Mat lbpImg, lbpHist;ExtractLBPFeatures(pair.second, lbpImg, lbpHist);lbpHistOFNonTarget.insert({ pair.first, lbpHist });Mat hsvHist;hsvHist ExtractHSVHistogram(pair.second);hisHistOFNonTarget.insert({ pair.first,hsvHist});/* imshow(false, pair.second);waitKey(0);*/}SvmClassifier(HOGDescriptorOFTarget, lbpHistOFTarget, hsvHistOFTarget,HOGDescriptorOFNonTarget,lbpHistOFNonTarget, hisHistOFNonTarget);PtrSVM svm SVM::load(C:/Users/svs/Desktop/svm_model2.xml);if (svm.empty()) {std::cerr 模型加载失败\n;return -1;}//进行预测cout star predict ...\n;multimapint, Mat testSuperPixelsImg;vectorfloat testHOGDescriptor;Mat testLbpHist;Mat testHsvHist;// 遍历每个超像素块for (int superpixelID 0; superpixelID g_NumSuperPixels; superpixelID) {Mat superpixelRegion GetSuperPixelsByLabel(img, superpixelID);testSuperPixelsImg.insert({ superpixelID, superpixelRegion });}for (const auto pairs : testSuperPixelsImg) {/*imshow(test, pairs.second);waitKey(0);*/testHOGDescriptor GetHOGDescriptor(pairs.second);Mat lbpImg;ExtractLBPFeatures(pairs.second, lbpImg,testLbpHist);testHsvHist ExtractHSVHistogram(pairs.second);if (testHOGDescriptor.empty()){cerr HOG特征为空超像素ID: \n;}if (testLbpHist.empty()){cerr LBP特征为空超像素ID: \n;}if(testHsvHist.empty()){cerr Hsv直方图为空超像素ID:\n;}Mat testHogMat(testHOGDescriptor, CV_32F);normalize(testHogMat, testHogMat, 0, 1, NORM_MINMAX);testHogMat testHogMat.reshape(1, 1);testLbpHist.convertTo(testLbpHist, CV_32F);testLbpHist testLbpHist.reshape(1, 1); testHsvHist.convertTo(testHsvHist, CV_32F);testHsvHist testHsvHist.reshape(1, 1); Mat combinedFeature;hconcat(testHogMat, testLbpHist, combinedFeature);hconcat(combinedFeature, testHsvHist, combinedFeature);// 进行预测float response;response svm-predict(combinedFeature);if (response 1) {}else {DrawSuperpixelRegion(img, pairs.first);}}imshow(Image with Green Superpixel, img);cout predict successful\n;waitKey(0);destroyAllWindows();return 0; }
http://www.dnsts.com.cn/news/21025.html

相关文章:

  • 网站开发项目终止协议书贵阳网站开发推荐
  • 宝塔怎么做第二个网站永久免费的网站
  • 机械加工网站推广有效果吗微信商城小程序免费制作平台
  • 绍兴市中等专业学校网站久久w 网
  • 想学做电商怎么加入网站建设和优化内容最重要性
  • 重庆网站设计制造厂家app源码交易平台
  • 网站建设推广济南兴田德润优惠吗网站流量
  • ftp更换网站谷歌商店下载官方
  • 梧州市建设局官方网站小工程承包
  • 网站综合排名信息查询网页浏览器图标
  • 做网站 做手机app要学什么软件鞋子的网站策划方案模板
  • 免费一键生成个人网站网络游戏营销策略
  • 孟州网站西安企业做网站多少钱
  • 做网站项目后台的运城又一暂停通知
  • 浙江广厦建设职业技术学院网站百度云怎么做网站
  • 做网站需要虚拟主机还是服务器wordpress推广链接地址
  • 池州网站优化公司vi设计概念
  • 邢台做网站的公司有那个重庆在线直播
  • 百度网站分析wordpress 维护中
  • 网站制作费计入什么科目网络教室网站建设
  • 广州网站制作哪家专业导航网站分析
  • 云南公司网站建设网站开发的进度安排
  • 高端网站设计平台手机网站建设事项
  • 注册网站怎么注册不了建设电子商务网站需要什么设备
  • 网站建设飠金手指下拉子公司怎么注册
  • 公司做网站找谁公司做网站找谁免费网站开发模板
  • 方山网站建设妇科医院手机网站
  • 合肥网站建设服务使用wordpress搭建博客
  • 可以挣钱的网站手机网站开发软件下载
  • 营口工程建设信息网站静态网站模板中英文