资源简介
实现对猕猴桃果实的图像处理,包含二值化、滤波、提取果实目标、图像相与、边缘化过程。

代码片段和文件信息
// 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个汇编小程序案例
相关资源
- 图像二值化
- 基于OpenCV的数字识别468815
- 使用opencv去掉二值化图像中黑色面积
- opencv环境配置
- win10 64位下编译的opencv4.5.5库,opencv
- NVIDIAOpticalFlowSDK-79c6cee80a2df9a196f20afd6
- opencv_contrib-3.4.0.zip
- opencv2.4.9源码分析——SIFT
- 用两个摄像头实现,双目标定,双目
- opencv_traincascade训练分类器,手势识别
- opencv3.0交叉编译用parallel.cpp
- 基于opencv的图像识别识别图像中的色
- 基于openCV的识别特定颜色区域
- 基于OpenCV的分水岭算法实现
- QT+opencv+OCR 身份证号码,银行卡号识别
- opencv视频特定颜色区域识别
- 把RGB转换为HSV和HSI然后根据黄色和蓝
- opencv视觉测距
- 基于Qt和opencv的身份证号码识别系统
- opencv_ffmpeg249.dll
- SfM稀疏三维点云重建--完整工程文件
- 基于opencv的数人头程序源代码
- 利用OpenCV中的Stitcher类实现全景图像拼
- opencv实现的sift算法源码,包含了图像
- openCV 上的小波变换
- 基于OPENCV的车牌识别系统设计
- 617张国内车牌60-17bmp图片用于OpenCV正样
- hog特征提取,c版本代码
- 基于Qt5.8+OpenCV3.2的Basler多相机触发开
- 基于Opencv实现的图像纠偏
评论
共有 条评论