이미지의 윤곽선을 필터링하려고합니다. 내 코드에는 구문 오류가 없지만 프로그램을 실행할 때 많은 빨간색 텍스트가 표시됩니다. 나는 실패 지점을 cvInRangeS로 정했다. 당신은 만들기에 println 문에서도 이것을 볼 수 있습니다JavaCV cvInRangeS 오류
cvInRangeS(imghsv,minc,maxc,imgbin);
그것에 그 도움이된다면 그게 문제가되지 않습니다 그래서 "thourgh3"
square.jpg 프로젝트 디렉토리에 있습니다. 이 코드가 빠르게 다가오고 내 로봇 팀과 경쟁하기 때문에
package opencv2;
/*There are import statments here but for the sake of space I have left them out :D*/
public class OpenCV2 {
public static void main(String[] args) {
IplImage img1;
IplImage imghsv;
IplImage imgbin;
CvScalar minc = cvScalar(95,150,75,0), maxc = cvScalar(145,255,255,0);
CvSeq contour1 = new CvSeq(), contour2;
CvMemStorage storage = CvMemStorage.create();
double areaMax = 1000, areaC = 0;
System.out.println("Through 1");
img1 = cvLoadImage("square.jpg");
imghsv = cvCreateImage(cvGetSize(img1),8,3);
imgbin = cvCreateImage(cvGetSize(img1),8,3);
System.out.println("Through 2");
cvCvtColor(img1,imghsv,CV_BGR2HSV);
System.out.println("Through 3");
cvInRangeS(imghsv,minc,maxc,imgbin);
System.out.println("Through 4");
cvFindContours(imgbin,storage,contour1,Loader.sizeof(CvContour.class),
CV_RETR_LIST, CV_LINK_RUNS,cvPoint(0,0));
contour2 = contour1;
System.out.println("Through 5");
while(contour1 != null && !contour1.isNull()){
areaC = cvContourArea(contour1,CV_WHOLE_SEQ,1);
if(areaC > areaMax){
areaMax = areaC;
}
contour1 = contour1.h_next();
}//end of while
while(contour2 != null && !contour2.isNull()){
areaC = cvContourArea(contour2,CV_WHOLE_SEQ,1);
System.out.println("Through 6");
if(areaC < areaMax){
cvDrawContours(imgbin,contour2,CV_RGB(0,0,0),CV_RGB(0,0,0),
0,CV_FILLED,8,cvPoint(0,0));
}//end of if
System.out.println("Through 7");
contour2 = contour2.h_next();
}//end of while2
System.out.println("Through 8");
cvShowImage("Color",img1);
cvShowImage("CF",img1);
cvWaitKey();
cvReleaseImage(img1);
cvReleaseImage(imghsv);
cvReleaseImage(imgbin);
cvReleaseMemStorage(storage);
}//end of main
}//end of class
빠른 응답 주시면 감사하겠습니다 다음과 같이
콘솔 returnes
는Through 1
Through 2
Through 3
OpenCV Error: Assertion failed (src1.size == dst.size && dst.type() == CV_8U) in cvInRangeS, file ..\..\..\..\opencv\modules\core\src\arithm.cpp, line 2972
Exception in thread "main" java.lang.RuntimeException: ..\..\..\..\opencv\modules\core\src\arithm.cpp:2972: error: (-215) src1.size == dst.size && dst.type() == CV_8U in function cvInRangeS
at com.googlecode.javacv.cpp.opencv_core.cvInRangeS(Native Method)
at opencv2.OpenCV2.main(OpenCV2.java:50)
Java Result: 1
전체 코드입니다!
고맙습니다. : D
도움 주셔서 감사합니다. 당신의 의견은 저를 발견에 이르게했습니다! –