资源简介

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

资源截图

代码片段和文件信息

// 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.embed.manifest

     文件        472  2017-01-01 10:08  kiwifruit\kiwifruit\Debug\kiwifruit.exe.embed.manifest.res

     文件        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\link-cvtres.read.1.tlog

     文件          2  2017-01-05 21:35  kiwifruit\kiwifruit\Debug\link-cvtres.write.1.tlog

     文件          2  2017-01-05 21:35  kiwifruit\kiwifruit\Debug\link.1092-cvtres.read.1.tlog

     文件          2  2017-01-05 21:35  kiwifruit\kiwifruit\Debug\link.1092-cvtres.write.1.tlog

     文件          2  2017-01-05 21:35  kiwifruit\kiwifruit\Debug\link.1092.read.1.tlog

     文件          2  2017-01-05 21:35  kiwifruit\kiwifruit\Debug\link.1092.write.1.tlog

     文件          2  2017-01-05 21:35  kiwifruit\kiwifruit\Debug\link.1228-cvtres.read.1.tlog

     文件          2  2017-01-05 21:35  kiwifruit\kiwifruit\Debug\link.1228-cvtres.write.1.tlog

     文件          2  2017-01-05 21:35  kiwifruit\kiwifruit\Debug\link.1228.read.1.tlog

     文件          2  2017-01-05 21:35  kiwifruit\kiwifruit\Debug\link.1228.write.1.tlog

     文件       3642  2017-01-05 21:35  kiwifruit\kiwifruit\Debug\link.command.1.tlog

     文件       9244  2017-01-05 21:35  kiwifruit\kiwifruit\Debug\link.read.1.tlog

     文件       1332  2017-01-05 21:35  kiwifruit\kiwifruit\Debug\link.write.1.tlog

............此处省略30个文件信息

评论

共有 条评论