OpenCV 최소 외 접 정사각형 실현
#include "stdafx.h"
#include "cv.h"
#include "highgui.h"
#include "cxcore.h"
#include "math.h"
#include <iostream.h>
int main(int argc, char* argv[])
{
IplImage *src;
IplImage *dst;
IplImage *ROI;
CvMemStorage* storage=cvCreateMemStorage(0);
CvSeq* contour=0;
src=cvLoadImage("I:\\test.jpg",0);
cvNamedWindow("image0",1);
cvShowImage("image0",src);
int hei=src->height;
int wid=src->width;
uchar *data;
data=(uchar*)src->imageData;
int widstep=src->widthStep;
int channel=src->nChannels;
dst=cvCreateImage(cvSize(wid,hei),IPL_DEPTH_8U,3);
ROI=cvCreateImage(cvSize(wid,hei),IPL_DEPTH_8U,3);
for (int i=0;i<hei;i++)
{
for(int j=0;j<wid;j++)
{
if (data[i*widstep+j*channel]>120)
{
data[i*widstep+j*channel]=0;
}
else
{
data[i*widstep+j*channel]=255;
}
}
}
cvNamedWindow("image",0);
cvShowImage("image",src);
printf(" :%d, :%d
",hei,wid);
cvCvtColor(src, dst, CV_GRAY2BGR);;
cvFindContours(src,storage,&contour,sizeof(CvContour),CV_RETR_CCOMP,CV_CHAIN_APPROX_SIMPLE);
for(;contour!=0;contour=contour->h_next)
{
double length =cvArcLength(contour);
double area =fabs(cvContourArea(contour));
CvRect rect = cvBoundingRect(contour,1);
cout<<"Length="<<length<<" Area="<<area<<endl;
CvPoint p1;
CvPoint p2;
p1.x=rect.x;
p1.y=rect.y;
p2.x=rect.x+rect.width;
p2.y=rect.y+rect.height;
cout<<"p1=("<<p1.x<<","<<p1.y<<")";
cout<<"p2=("<<p2.x<<","<<p2.y<<")"<<endl;
cvRectangle(dst,p1,p2,CV_RGB(255,0,0),1,8,0);
}
cvNamedWindow("dst",1);
cvShowImage("dst",dst);
cvWaitKey(0);
return 0;
}
원본 그림:이치 화 반 색도:
최소 직사각형 그림:
최소 사각형 정보:
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Visual Studio 2017에서 OpenCV 템플릿 프로젝트 만들기・Windows 7 Professional 64bit ・Visual Studio 2017 Version 15.9.14 · OpenCV 3.4.1 OpenCV의 도입 방법 등은 아래를 참조하십시오. Visual Stu...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.