OpenCV mat类实现水平投影和垂直投影
来源:互联网 发布:paxos和raft算法 编辑:程序博客网 时间:2024/05/16 14:49
图像经过灰度化和otsu阈值分割,分别绘制水平和垂直投影
#include<iostream> #include <cv.h> #include <highgui.h> #include <cvaux.h> #include <tchar.h> using namespace std ;using namespace cv ;int main(){ //原图 Mat srcImage=imread("test.png"); imshow("原图",srcImage); //灰度化 cvtColor(srcImage,srcImage,CV_RGB2GRAY); //otsu阈值分割 threshold(srcImage,srcImage,0,255,CV_THRESH_OTSU+CV_THRESH_BINARY); imshow("二值图",srcImage); //计算垂直投影 int *colheight =new int[srcImage.cols]; //数组必须赋初值为零,否则出错。无法遍历数组。 memset(colheight,0,srcImage.cols*4); int value; for(int i=0;i<srcImage.rows;i++) for(int j=0;j<srcImage.cols;j++) { value=srcImage.at<uchar>(i,j); if(value==255) { colheight[j]++; } } Mat histogramImage(srcImage.rows,srcImage.cols,CV_8UC1); for(int i=0;i<srcImage.rows;i++) for(int j=0;j<srcImage.cols;j++) { value=0; //设置为黑色。 histogramImage.at<uchar>(i,j)=value; } for(int i=0;i<srcImage.cols;i++) for(int j=0;j<colheight[i];j++) { value=255; //设置为白色 histogramImage.at<uchar>(j,i)=value; } imshow("垂直投影",histogramImage); //计算水平投影 int *colheighttwo =new int[srcImage.rows]; //数组必须赋初值为零,否则出错。无法遍历数组。 memset(colheighttwo,0,srcImage.rows*4); int valuetwo; for(int i=0;i<srcImage.rows;i++) for(int j=0;j<srcImage.cols;j++) { valuetwo=srcImage.at<uchar>(i,j); if(valuetwo==255) { colheighttwo[i]++; } } Mat plantImage(srcImage.rows,srcImage.cols,CV_8UC1); //创建一个新的mat型 //把这个图全部画成黑色 for(int i=0;i<srcImage.rows;i++) for(int j=0;j<srcImage.cols;j++) { valuetwo=0; //设置为黑色。 plantImage.at<uchar>(i,j)=valuetwo; } for(int i=0;i<srcImage.rows;i++) for(int j=0;j<colheighttwo[i];j++) { valuetwo=255; //设置为白色 plantImage.at<uchar>(i,j)=valuetwo; } imshow("水平投影",plantImage); waitKey(0); return 0;}
效果:
2 0
- OpenCV mat类实现水平投影和垂直投影
- 对OpenCV mat进行水平和垂直方向的投影
- 使用OpenCv中Mat进行水平投影与垂直投影并实现字符切分
- 使用OpenCv中Mat进行水平投影与垂直投影并实现字符切分
- opencv计算图像的水平投影和垂直投影
- 水平投影和垂直投影的用处
- 利用OpenCV计算图像的垂直和水平积分投影
- 利用OpenCV计算图像的垂直和水平积分投影
- 利用OpenCV计算图像的垂直和水平积分投影
- 【OpenCV】计算图像的水平和垂直积分投影
- opencv-python实现水平投影
- opencv学习---计算图像的水平积分投影和垂直积分投影
- opencv学习---计算图像的水平积分投影和垂直积分投影
- Matlab实现灰度图像的水平和垂直投影
- 水平垂直投影
- 水平垂直投影
- 基于水平投影,垂直投影的字符图像分割思路和代码实现
- opencv实现字符的垂直投影
- JavaWeb总结十七、JSP中的九个内置对象
- 音视频基础知识
- the read modes of FPGA FIFO —FWFT and Standard
- java poi 通过excel模板导出并且生成多个sheet
- 迭代 递归 普通循环的区别
- OpenCV mat类实现水平投影和垂直投影
- C++标准库bitset对象的初始化及操作
- CString转Char* char[]转CString
- Windows NDK安装及开发
- JavaScript 常量定义
- 在python3中import cv2显示"ImportError: DLL load failed: 找不到指定的模块。"
- 多址技术剖析
- TeX中的引号 (Tex Quotes, UVa 272)
- CXF用工具生成相应客户端