⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 firstgreen.cpp

📁 Detect Row in greenhouse , image processing , developed in linux , compiled with gcc
💻 CPP
字号:
// Tuned for First GreenHouse// compile argument -->  g++ -Wall -c "%f" `pkg-config --cflags --libs opencv`// Build Argument --> g++ -Wall "%f" `pkg-config --cflags --libs opencv`// Youhanna Parvizinejad #include <stdio.h>#include <stdlib.h>#include <cv.h>#include <cvaux.h>#include <highgui.h>int miny1=150; // Limit in vert pix for checking typedef unsigned char byte;typedef struct{byte B, G, R;} Sline;inline void* ScanLine(IplImage* img, int y){	return (img->imageData + img->widthStep * y);}	void HSVhisto(IplImage* des, IplImage* inH, IplImage* inS, IplImage* inV, float Hmin, float Hmax, float Smin, float Smax, float Vmin, float Vmax){    byte *pD, *pH, *pS, *pV;    for (int y = miny1; y < des->height; y++)    {    	pD = (byte*)ScanLine(des, y);    	pH = (byte*)ScanLine(inH, y);    	pS = (byte*)ScanLine(inS, y);    	pV = (byte*)ScanLine(inV, y);    	    	for (int x = 0; x < des->width; x++)    	{    		float cH = (float)(pH[x]/255.0*360.0);    		float cS = (float)(pS[x]/255.0*100);    		float cV = (float)(pV[x]/255.0*100);    		    	    if ( !((cH >= Hmin) && (cH <= Hmax) && (cS >= Smin) && (cS <= Smax) && (cV >= Vmin) && (cV <= Vmax)))    	    {    	    	pD[x] = 0;    	    }    	    else    	        pD[x] = 255;    	        	}    	    }	}	int main(int argc, char** argv){            IplImage* img = cvLoadImage("5.jpg", 1);	IplImage* hsv = cvCreateImage( cvGetSize(img), 8, 3 );    IplImage* h   = cvCreateImage( cvGetSize(img), 8, 1 );    IplImage* s   = cvCreateImage( cvGetSize(img), 8, 1 );     IplImage* v   = cvCreateImage( cvGetSize(img), 8, 1 );     IplImage* des = cvCreateImage( cvGetSize(img), 8, 1 );    IplImage* cor = cvCreateImage( cvGetSize(img), IPL_DEPTH_32F, 1);        CvMemStorage* storage = cvCreateMemStorage(0);    CvSeq* lines = 0;        //cvSmooth(img, img, CV_GAUSSIAN, 3);        cvCvtColor(img, hsv, CV_BGR2HSV);    cvSplit(hsv, h, s, v, 0);	cvEqualizeHist(h, h);	cvEqualizeHist(s, s);	cvEqualizeHist(v, v);    HSVhisto(des, h, s, v, 140, 345, (float)0, (float)30, (float)55, (float)100);// Equalized histogram        //cvErode(des, des, 0, 1);    cvDilate(des, des, 0, 1);        lines = cvHoughLines2( des, storage, CV_HOUGH_PROBABILISTIC, 1, CV_PI/180, 200, 100, 5);															           for(int i = 0; i < lines->total; i++ )    {        CvPoint* line = (CvPoint*)cvGetSeqElem(lines,i);        cvLine( img, line[0], line[1], CV_RGB(255,0,0), 10, 8 );    }            cvNamedWindow ("WinName", 1);  	cvShowImage("WinName", img);    cvWaitKey(0);        cvDestroyAllWindows();        cvReleaseImage(&img);       cvReleaseImage(&hsv);       cvReleaseImage(&h);       cvReleaseImage(&s);       cvReleaseImage(&v);       cvReleaseImage(&des);       cvReleaseImage(&cor);          return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -