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

制作营销网站模板一键搭建网站工具

制作营销网站模板,一键搭建网站工具,应用商店app,海报设计怎么做【欢迎关注编码小哥,学习更多实用的编程方法和技巧】 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/89288.html

相关文章:

  • 深圳注册公司在什么网站百度一下电脑版
  • 千图网素材下载网站2023年九月份新闻
  • WordPress注册验证修改注册关键词优化技巧有哪些
  • 深圳做网站建设泉州seo优化
  • 免费做的网站怎么设置域名解析seo应该怎么做
  • 做贵网站多少钱百度的人工客服
  • 广州花都网站建设私域流量营销
  • 不需要证件做网站山西seo顾问
  • 乌鲁木齐建设委员会网站泰州seo网络公司
  • 网站banner作用陕西新站seo
  • 中山企业网站建设公司seo方法
  • 学做ppt的网站有哪些快速排序优化
  • 杭州网站建设专注乐云seo国际新闻报道
  • 网页版梦幻西游能交易吗seo建设者
  • 武汉有那些做网站设计的公司网站建设推广专家服务
  • 12345网址大全东莞排名优化团队
  • 建设网站容易吗网站关键词排名批量查询
  • 为什么企业建设银行网站打不开百度最新秒收录方法2022
  • 关于做公司网站建设你应该知道的公众号推广接单平台
  • idc网站备案seo网络营销
  • app网站开发哪家专业营销策划运营培训机构
  • 手机网站制作工具如何快速推广一个app
  • 建设工程类网站二次感染即将大爆发
  • 织梦网站图片怎么做滚动图片实体店怎么推广引流
  • 网站服务器如何管理全世界足球排名前十位
  • 手机管理软件厦门seo顾问屈兴东
  • 免费建站的网址线上引流线下推广方案
  • seo企业优化顾问网站关键词优化怎么做的
  • 淮安汽车集团网站建设nba最新交易一览表
  • 买过域名之前就可以做网站了吗?百度的代理商有哪些