Ошибка JavaCV cvInRangeSJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка JavaCV cvInRangeS

Сообщение Anonymous »

Я пытаюсь отфильтровать контуры изображения. В моем коде нет синтаксических ошибок, но при запуске программы я получаю много красного текста. Я обнаружил точку отказа — cvInRangeS.

cvInRangeS(imghsv,minc,maxc,imgbin);


Вы можете видеть это, когда операторы println доводят его только до «thourgh3».

square.jpg находится в каталог проекта, так что это не должно быть проблемой, если это поможет.

Консоль возвращается

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


Полный код выглядит следующим образом

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


Подробнее здесь: https://stackoverflow.com/questions/216 ... nges-error
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как устранить дрожание пикселей в видео, сгенерированном javacv
    Anonymous » » в форуме Python
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Эффективный способ обработки видеопотока с помощью JavaCV FFMPEG
    Anonymous » » в форуме JAVA
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • JavaCV FFmpegFrameRecorder сохраняет изображения в видео
    Anonymous » » в форуме JAVA
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • OpenCV (JavaCV) и OpenCV (интерфейсы C/C++)
    Anonymous » » в форуме JAVA
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • OpenCV (JavaCV) и OpenCV (интерфейсы C/C++)
    Anonymous » » в форуме C++
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»