资源简介
实现对猕猴桃果实的图像处理,包含二值化、滤波、提取果实目标、图像相与、边缘化过程。
代码片段和文件信息
// kiwifruit.cpp : 定义控制台应用程序的入口点。
#include “stdafx.h“
#include “stdio.h“
#include “stdlib.h“
#include
#include
#include
#include
#include
#include
#include
#include “math.h“
#include “cv.h“
using namespace cv;
using namespace std;
static inline bool ContoursSortFun(vectorcontour1vectorcontour2)
{
return(cv::contourArea(contour1)>cv::contourArea(contour2));
}
//阈值化算法 threshold algorithm
int height;
int width;
int otsu(IplImage* A IplImage* B)
{
long N = height * width;
int h[256];
double p[256]u[256]w[256];
for(int i = 0; i < 256; i++)
{
h[i] = 0;
p[i] = 0;
u[i] = 0;
w[i] = 0;
}
for(int i = 0; i < height; i++)
for(int j = 0; j < width; j++)
for(int k = 0; k < 256; k++)
{
if(((uchar*)(A->imageData + A->widthStep*i))[j] == k)
h[k]++;
}
for(int i = 0; i < 256; i++)
p[i] = h[i] / double(N);
int T = 0;
double uTthegma2fang;
double thegma2fang_max = -10000;
for(int k = 0; k < 256; k++)
{
uT = 0;
for(int i = 0; i <= k; i++)
{
u[k] += i*p[i];
w[k] += p[i];
}
for(int i = 0; i < 256; i++)
uT += i*p[i];
thegma2fang = (uT*w[k] - u[k])*(uT*w[k] - u[k]) / (w[k]*(1-w[k]));
if(thegma2fang > thegma2fang_max)
{
thegma2fang_max = thegma2fang;
T = k;
}
}
for(int i = 0; i < height; i++) //根据最佳阈值,对原图像进行处理二值化处理 using optimal threshold for binarization processing.
for(int j = 0; j < width; j++)
if(((uchar*)(A->imageData + A->widthStep*i))[j] > T)
((uchar*)(B->imageData + B->widthStep*i))[j] = 255;
else
((uchar*)(B->imageData + B->widthStep*i))[j] = 0;
printf(“the threshold=%d\n“T);
return T;
}
int _tmain(int argc _TCHAR* argv[])
{
//load the original image
IplImage*src;
src=cvLoadImage(“kiwifruit.jpg“);
cvNamedWindow(“1)original image“1);
cvShowImage(“1)original image“src);
//converted to a mat type for 1.1R-G
vectorchannels;
Mat src0(src);
Mat imgBchannel;
Mat imgGchannel;
Mat imgRchannel;
//1.1R-G:extraction for three-channel
split(src0channels);
imgBchannel=channels.at(0);
imgGchannel=channels.at(1);
imgRchannel=channels.at(2);
Mat dst0;
dst0=1.1*imgRchannel-imgGchannel;
namedWindow(“2)1.1R-G“);
imshow(“2)1.1R-G“dst0);
//归一化 narmalization
Mat out0;
normalize(dst0out00255NORM_MINMAX);
imshow(“3)narmalized image“out0);
//中值滤波 medium filtering
Mat out1;
medianBlur(out0out15);
imshow(“4)Image after meidan filtering“out1);
//Otsu阈值化 Otsu
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 118272 2017-01-05 21:35 kiwifruit\Debug\kiwifruit.exe
文件 1789148 2017-01-05 21:35 kiwifruit\Debug\kiwifruit.ilk
文件 2231296 2017-01-05 21:35 kiwifruit\Debug\kiwifruit.pdb
文件 2359296 2017-01-05 21:35 kiwifruit\ipch\kiwifruit-abc8e420\kiwifruit-7e07a6ea.ipch
文件 1738 2017-01-05 21:35 kiwifruit\kiwifruit\Debug\cl.command.1.tlog
文件 23378 2017-01-05 21:35 kiwifruit\kiwifruit\Debug\CL.read.1.tlog
文件 1270 2017-01-05 21:35 kiwifruit\kiwifruit\Debug\CL.write.1.tlog
文件 406 2017-01-01 10:08 kiwifruit\kiwifruit\Debug\kiwifruit.exe.em
文件 472 2017-01-01 10:08 kiwifruit\kiwifruit\Debug\kiwifruit.exe.em
文件 381 2017-01-05 21:35 kiwifruit\kiwifruit\Debug\kiwifruit.exe.intermediate.manifest
文件 90 2017-01-05 21:35 kiwifruit\kiwifruit\Debug\kiwifruit.lastbuildstate
文件 3640 2017-01-05 21:35 kiwifruit\kiwifruit\Debug\kiwifruit.log
文件 244382 2017-01-05 21:35 kiwifruit\kiwifruit\Debug\kiwifruit.obj
文件 1179648 2017-01-01 10:08 kiwifruit\kiwifruit\Debug\kiwifruit.pch
文件 713 2017-01-01 10:57 kiwifruit\kiwifruit\Debug\kiwifruit.vcxprojResolveAssemblyReference.cache
文件 0 2017-01-01 10:08 kiwifruit\kiwifruit\Debug\kiwifruit.write.1.tlog
文件 208 2017-01-01 10:08 kiwifruit\kiwifruit\Debug\kiwifruit_manifest.rc
文件 2 2017-01-05 21:35 kiwifruit\kiwifruit\Debug\li
文件 2 2017-01-05 21:35 kiwifruit\kiwifruit\Debug\li
文件 2 2017-01-05 21:35 kiwifruit\kiwifruit\Debug\li
文件 2 2017-01-05 21:35 kiwifruit\kiwifruit\Debug\li
文件 2 2017-01-05 21:35 kiwifruit\kiwifruit\Debug\li
文件 2 2017-01-05 21:35 kiwifruit\kiwifruit\Debug\li
文件 2 2017-01-05 21:35 kiwifruit\kiwifruit\Debug\li
文件 2 2017-01-05 21:35 kiwifruit\kiwifruit\Debug\li
文件 2 2017-01-05 21:35 kiwifruit\kiwifruit\Debug\li
文件 2 2017-01-05 21:35 kiwifruit\kiwifruit\Debug\li
文件 3642 2017-01-05 21:35 kiwifruit\kiwifruit\Debug\li
文件 9244 2017-01-05 21:35 kiwifruit\kiwifruit\Debug\li
文件 1332 2017-01-05 21:35 kiwifruit\kiwifruit\Debug\li
............此处省略30个文件信息
- 上一篇:串口通信的Verilog代码及TestBench
- 下一篇:25个汇编小程序案例
相关资源
- qt环境下使用opencv打开双摄像头并保存
- opencv学习手势轮廓识别源代码
- OpenCV2 计算机视觉编程手册 配套源代
- 基于opencv的双目测距代码+文章
- opencvc车流量统计
- 车辆与车道线的检测与跟踪
- 基于opencv实现的图像拼接
- ROI区域&图像混合例程by浅墨
- ASM 人脸特征点提取
- 车牌识别源代码
- 并行计算mpi与openmp之蒙特卡洛求不规
- Opencv下利用SIFT、SURF、ORB三种特征点实
- opencv 、directshow捕获摄像头实时播放
- Opencv和图像分类
- 基于opencv的车道线检测代码
- OPENCv 在图片上写字,各种格式
- QT+OpenCV实现图像识别
- 程序包.rar基于pyqt+OpenCV设计的用户密
- OpenCV双目标定双目校正
- 用OpenCV作的一个车牌识别程序,可以
- 邮政编码识别 OPENCV
- opencv 神经网络分类
- opencv中文chm参考api文档
- opencv识别单行数字
- 颜色增强算法Opencv
- 一个基于 OpenCV 的人脸识别系统
- opencv检测人眼并精准定位瞳孔
- Opencv实现物体识别和追踪
- 基于OpenCV多目标的模板匹配算法
- Opencv中文手册资料
评论
共有 条评论