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

制作营销网站模板国际新闻视频

制作营销网站模板,国际新闻视频,ios开发网站app,cydia软件源网站开发【欢迎关注编码小哥,学习更多实用的编程方法和技巧】 1、基本直方图计算 // 灰度图直方图 cv::Mat calculateGrayscaleHistogram(const cv::Mat& image) {cv::Mat histogram;int histSize 256; // 灰度级别float range[] {0, 256};const float* histRange …

【欢迎关注编码小哥,学习更多实用的编程方法和技巧】

1、基本直方图计算

// 灰度图直方图
cv::Mat calculateGrayscaleHistogram(const cv::Mat& image) {cv::Mat histogram;int histSize = 256;  // 灰度级别float range[] = {0, 256};const float* histRange = {range};cv::calcHist(&image,      // 输入图像1,           // 图像数量0,           // 通道索引cv::Mat(),   // 掩膜histogram,   // 输出直方图1,           // 直方图维度&histSize,   // 直方图大小&histRange   // 像素值范围);return histogram;
}// 彩色图直方图
std::vector<cv::Mat> calculateColorHistogram(const cv::Mat& image) {std::vector<cv::Mat> histograms(3);int histSize = 256;float range[] = {0, 256};const float* histRange = {range};// 分离通道std::vector<cv::Mat> channels;cv::split(image, channels);// 计算每个通道直方图for (int i = 0; i < 3; i++) {cv::calcHist(&channels[i],  // 输入通道1,             // 图像数量0,             // 通道索引cv::Mat(),     // 掩膜histograms[i], // 输出直方图1,             // 直方图维度&histSize,     // 直方图大小&histRange     // 像素值范围);}return histograms;
}

 2、直方图可视化

class HistogramVisualizer {
public:// 绘制直方图static cv::Mat drawHistogram(const cv::Mat& histogram, int height = 400) {// 归一化直方图cv::Mat normalizedHist;cv::normalize(histogram, normalizedHist, 0, height, cv::NORM_MINMAX);// 创建绘图画布int width = 512;cv::Mat histImage(height, width, CV_8UC3, cv::Scalar(255, 255, 255));// 绘制直方图int binWidth = cvRound((double)width / histogram.rows);for (int i = 1; i < histogram.rows; i++) {cv::line(histImage, cv::Point(binWidth * (i - 1), height - cvRound(normalizedHist.at<float>(i - 1))),cv::Point(binWidth * i, height - cvRound(normalizedHist.at<float>(i))),cv::Scalar(0, 0, 0), 2);}return histImage;}// 绘制彩色直方图static cv::Mat drawColorHistogram(const std::vector<cv::Mat>& histograms) {int height = 400;int width = 512;cv::Mat histImage(height, width, CV_8UC3, cv::Scalar(255, 255, 255));std::vector<cv::Scalar> colors = {cv::Scalar(255, 0, 0),   // 蓝色cv::Scalar(0, 255, 0),   // 绿色cv::Scalar(0, 0, 255)    // 红色};// 归一化直方图std::vector<cv::Mat> normalizedHists(3);for (int i = 0; i < 3; i++) {cv::normalize(histograms[i], normalizedHists[i], 0, height, cv::NORM_MINMAX);}// 绘制直方图int binWidth = cvRound((double)width / histograms[0].rows);for (int i = 1; i < histograms[0].rows; i++) {for (int channel = 0; channel < 3; channel++) {cv::line(histImage, cv::Point(binWidth * (i - 1), height - cvRound(normalizedHists[channel].at<float>(i - 1))),cv::Point(binWidth * i, height - cvRound(normalizedHists[channel].at<float>(i))),colors[channel], 2);}}return histImage;}
};

3、直方图均衡化 

class HistogramEqualizer {
public:// 灰度图均衡化static cv::Mat equalizeGrayscaleImage(const cv::Mat& image) {cv::Mat equalizedImage;cv::equalizeHist(image, equalizedImage);return equalizedImage;}// 彩色图均衡化static cv::Mat equalizeColorImage(const cv::Mat& image) {// 转换到YUV空间cv::Mat yuvImage;cv::cvtColor(image, yuvImage, cv::COLOR_BGR2YUV);// 分离通道std::vector<cv::Mat> channels;cv::split(yuvImage, channels);// 仅均衡化亮度通道cv::equalizeHist(channels[0], channels[0]);// 合并通道cv::merge(channels, yuvImage);// 转换回BGRcv::Mat equalizedImage;cv::cvtColor(yuvImage, equalizedImage, cv::COLOR_YUV2BGR);return equalizedImage;}// 自适应直方图均衡化(CLAHE)static cv::Mat adaptiveHistogramEqualization(const cv::Mat& image, double clipLimit = 2.0) {cv::Mat yuvImage;cv::cvtColor(image, yuvImage, cv::COLOR_BGR2YUV);std::vector<cv::Mat> channels;cv::split(yuvImage, channels);// 创建CLAHE对象cv::Ptr<cv::CLAHE> clahe = cv::createCLAHE(clipLimit, cv::Size(8, 8));clahe->apply(channels[0], channels[0]);cv::merge(channels, yuvImage);cv::Mat equalizedImage;cv::cvtColor(yuvImage, equalizedImage, cv::COLOR_YUV2BGR);return equalizedImage;}
};

 4、直方图比较

class HistogramComparator {
public:// 直方图比较方法enum CompareMethod {CORRELATION = cv::HISTCMP_CORREL,CHI_SQUARE = cv::HISTCMP_CHISQR,INTERSECTION = cv::HISTCMP_INTERSECT,BHATTACHARYYA = cv::HISTCMP_BHATTACHARYYA};// 比较两个直方图static double compareHistograms(const cv::Mat& hist1, const cv::Mat& hist2, CompareMethod method = CORRELATION) {return cv::compareHist(hist1 , hist2, method);}
};// 使用示例
cv::Mat image1 = cv::imread("image1.jpg", cv::IMREAD_GRAYSCALE);
cv::Mat image2 = cv::imread("image2.jpg", cv::IMREAD_GRAYSCALE);cv::Mat hist1 = calculateGrayscaleHistogram(image1);
cv::Mat hist2 = calculateGrayscaleHistogram(image2);double similarity = HistogramComparator::compareHistograms(hist1, hist2, HistogramComparator::CORRELATION);
std::cout << "Histogram similarity: " << similarity << std::endl; ```cpp
// 重新合并通道
cv::Mat processedImage;
cv::merge(channels, processedImage);
return processedImage;
}// 使用示例
cv::Mat inputImage = cv::imread("input.jpg");
cv::Mat outputImage = processImageChannels(inputImage);// 显示结果
cv::imshow("Processed Image", outputImage);
cv::waitKey(0);
cv::destroyAllWindows();
``` ```cpp
// 重新合并通道
cv::Mat processedImage;
cv::merge(channels, processedImage);
return processedImage;
}// 使用示例
cv::Mat inputImage = cv::imread("input.jpg");
cv::Mat outputImage = processImageChannels(inputImage);// 显示结果
cv::imshow("Processed Image", outputImage);
cv::waitKey(0);
cv::destroyAllWindows();
}

http://www.tj-hxxt.cn/news/96105.html

相关文章:

  • 三峡日报 做网站网站域名在哪买
  • 架设仿冒网站挂马seo网页的基础知识
  • 长春做网站要多少钱百度账号申诉中心
  • 房价查询网徐州网站建设方案优化
  • 微信网站怎么做的好b站免费版入口
  • 网站建设部署与发布网络营销的营销理念
  • 网站备案需要多少钱关键词搜索排名查询
  • 做编程网站网络推广网站的方法
  • 旅游网站定位天津百度分公司
  • wordpress 设置cookies智谋网站优化公司
  • 锦州北京网站建设推广文案范文100字
  • 设计软件网站制作网站建设网络营销期末总结
  • 个人域名可以做网站吗搜索引擎优化的常用方法
  • 网站百度搜索不到百度竞价推广开户价格
  • 怎样做网站不花钱广告推广免费平台
  • 织梦做的网站后台怎么进在百度做广告多少钱
  • 大学学风建设专题网站萌新seo
  • 网站联盟三要素优化建站
  • 行业网站建设方案seo网站整站优化
  • 建设银行 嘉定 网站线下推广活动策划方案
  • 网站建设如何报价谷歌seo优化中文章
  • 福田欧曼服务站电话网络营销八大工具
  • 免费建商城网站自有品牌如何推广
  • kswebseo职业发展
  • 济南做网站优化公司网络营销的基本方法
  • 文化建设基金管理有限公司网站新闻摘抄2022最新20篇
  • app开发排名公司手机优化大师下载安装
  • 太原广告公司网站建设全网万能搜索引擎
  • 网站连接怎么做seo平台怎么样
  • 沈阳网站建河北百度seo点击软件