Mac中opencv批量对图片进行二值化
对灰度图像进行二值化,传入的图片是手写汉字的截图,通过二值化把字的部分提出来。用ostu进行二值化
#include <stdio.h>
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <stdio.h>
#include<stack>
using namespace std;
using namespace cv;
#include <fstream> #include <sys/uio.h>
#include <dirent.h> int main()
{ struct dirent *dirp;
DIR* dir = opendir("/Users/tanchao/Documents/c++work/myopencv5/myopencv5/image"); //int blockSize = 25;
//int constValue = 10;
while ((dirp = readdir(dir)) != nullptr)
{
if (dirp->d_type == DT_REG &&string(dirp->d_name)!=".DS_Store")//.DS_Store是Mac中隐藏文件,记录这个文件夹的属性,所以我们要跳过这个文件
{
Mat g_srcImage;
g_srcImage = imread("/Users/tanchao/Documents/c++work/myopencv5/myopencv5/image/"+string(dirp->d_name),);//第二个参数0表示灰度图读取
//imshow("test",g_srcImage);
Mat changeMat = Mat::zeros(cv::Size(g_srcImage.cols, g_srcImage.rows), CV_8UC1);//修改之后的图片
for(int i=;i<g_srcImage.rows;i++)
{
for(int j=;j<g_srcImage.cols;j++)
{ //if(int(g_srcImage.at<uchar>(i,j))>150)
//changeMat.ptr<uchar>(i)[j] = 255;
//else
//changeMat.ptr<uchar>(i)[j] = int(g_srcImage.at<uchar>(i,j));
//cout<<int(g_srcImage.at<uchar>(i,j))<<" ";
//adaptiveThreshold(g_srcImage, changeMat, 255, CV_ADAPTIVE_THRESH_MEAN_C, CV_THRESH_BINARY_INV, blockSize, constValue); threshold(g_srcImage, changeMat, , , CV_THRESH_OTSU); }
//cout << "\n"<<endl;
}
cout<<"/Users/tanchao/Documents/c++work/myopencv5/myopencv5/change/"+string(dirp->d_name)<<endl;
imwrite("/Users/tanchao/Documents/c++work/myopencv5/myopencv5/quanjuyuzhi/"+string(dirp->d_name),changeMat);//加了用来截图
}
}
closedir(dir);
waitKey();
return ; }
其实也可以用自适应二值化和自己设定阈值进行二值化,具体的可以根据代码中注释部分进行修改。
Mac中opencv批量对图片进行二值化的更多相关文章
- OpenCV图像的二值化
图像的二值化: 与边缘检测相比,轮廓检测有时能更好的反映图像的内容.而要对图像进行轮廓检测,则必须要先对图像进行二值化,图像的二值化就是将图像上的像素点的灰度值设置为0或255,这样将使整个图像呈现出 ...
- OpenCV中对图像进行二值化的关键函数——cvThreshold()。
函数功能:采用Canny方法对图像进行边缘检测 函数原型: void cvThreshold( const CvArr* src, CvArr* dst, double threshold, doub ...
- opencv python 图像二值化/简单阈值化/大津阈值法
pip install matplotlib 1简单的阈值化 cv2.threshold第一个参数是源图像,它应该是灰度图像. 第二个参数是用于对像素值进行分类的阈值, 第三个参数是maxVal,它表 ...
- 基于Java对图片进行二值化处理
一直以来对Java的图形处理能力表无力,但好像又不是那么一回事,之前用PHP做过一些应用,涉及到验证码的识别,其中有个图片二值化的步骤,今天换成Java来实现下 在java的扩展包javax.imag ...
- 10、OpenCV Python 图像二值化
__author__ = "WSX" import cv2 as cv import numpy as np #-----------二值化(黑0和白 255)---------- ...
- opencv中对图片的二值化操作并提取特定颜色区域
一.最近因为所在的实习公司要求用opencv视觉库来写一个对图片识别并提取指定区域的程序.看了很多资料,只学会了皮毛,下面附上简单的代码.运行程序之前需要安装opencv库,官网地址为:https:/ ...
- opencv图像二值化的函数cvThreshold()。 cvAdaptiveThreshol
OpenCV中对图像进行二值化的关键函数——cvThreshold(). 函数功能:采用Canny方法对图像进行边缘检测 函数原型: void cvThreshold( const CvArr* sr ...
- 实现图像的二值化(java+opencv)
书里的解释: 其他的没找到什么资料,直接参考百度百科 https://baike.baidu.com/item/%E5%9B%BE%E5%83%8F%E4%BA%8C%E5%80%BC%E5%8C%9 ...
- 深度学习实践-强化学习-bird游戏 1.np.stack(表示进行拼接操作) 2.cv2.resize(进行图像的压缩操作) 3.cv2.cvtColor(进行图片颜色的转换) 4.cv2.threshold(进行图片的二值化操作) 5.random.sample(样本的随机抽取)
1. np.stack((x_t, x_t, x_t, x_t), axis=2) 将图片进行串接的操作,使得图片的维度为[80, 80, 4] 参数说明: (x_t, x_t, x_t, x_t) ...
随机推荐
- PHP:引用PhpExcel导出数据到excel表格
我使用的是tp3.2框架(下载地址:http://www.thinkphp.cn/topic/38123.html) 1.首先要下载PhpExcel类库,放在如下图目录下 2.调用方法 public ...
- Hive 2.1.1安装配置
##前期工作 安装JDK 安装Hadoop 安装MySQL ##安装Hive ###下载Hive安装包 可以从 Apache 其中一个镜像站点中下载最新稳定版的 Hive, apache-hive-2 ...
- 2012年第三届蓝桥杯Java本科组省赛试题解析
题目地址:https://wenku.baidu.com/view/326f7b4be518964bcf847c96.html?rec_flag=default => 百度文档 题目及解析 ...
- WPF 自定义分页控件一
一:右键添加新建项,选择新建自定义控件,命名为:KDataPager public class KDataPager : Control { static KDataPager() { Default ...
- redis下操作String
redis操作string string是redis最基本的类型 最大能存储512MB数据 string类型是二进制安全的,即可以为任何数据,比如数字.图片.序列化对象等 基本命令 设置 设置键值 s ...
- nodejs基础学习1
ES6常用新语法 ES6新语法 什么是ES6? 由于JavaScript是上个世纪90年代,由Brendan Eich在用了10天左右的时间发明的:虽然语言的设计者很牛逼,但是也扛不住"时间 ...
- iOS第三方登录qq
http://blog.sina.com.cn/s/blog_7b9d64af0101e5vj.html
- ucenter
1 UCenter 的目录结构 2API接口 3返回标签数据示例 (PHP) 4应用接口函数 5短消息接口函数 6积分接口函数 7邮件接口函数 8事件接口函数 9头像接口函数 10好友接口函数 11用 ...
- python中的insert
insert()往列表的指定位置添加元素,举个例子: 1 a = ["hello", "world", "dlrb"] 2 a.insert ...
- js对象及元素复制拷贝
1.数组及对象拷贝: 浅拷贝var b=$.extend(false,{},a);//对象浅拷贝 var a={aa:111,bb:{bb1:22}}; var b=$.extend(false,{} ...