Собственно, пытаюсь реализовать с помощью библиотеки OpenCV нахождения по шаблону на изображении. Но столкнулся со следующей ошибкой. Она возникает при выполнении: Imgproc.matchTemplate(img, templ, result, matchType);
E/cv::error(): OpenCV Error: Assertion failed (corrsize.height <= img.rows + templ.rows - 1 && corrsize.width <= img.cols + templ.cols - 1) in void cv::crossCorr(const cv::Mat&, const cv::Mat&, cv::Mat&, cv::Size, int, cv::Point, double, int), file /Volumes/Linux/builds/master_pack-android/opencv/modules/imgproc/src/templmatch.cpp
public class test extends AppCompatActivity{
private String mainImgPath, templateImgPath, resultImgPath;
private EditText etFirst,etSecond;
private static final String TAG = "Test";
private Button btnFind;
static {
if(!OpenCVLoader.initDebug()){
Log.e(TAG, "OpenCV not loaded");
} else {
Log.e(TAG, "OpenCV loaded");
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.show_camera);
System.loadLibrary("opencv_java3");
btnFind = (Button)findViewById(R.id.btnFind);
etFirst = (EditText)findViewById(R.id.etFirst);
etSecond = (EditText)findViewById(R.id.etSecond);
final String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath();
resultImgPath = baseDir+"/DCIM/Camera/result.jpg";
btnFind.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mainImgPath = baseDir + "/DCIM/Camera/1.jpg";
templateImgPath = baseDir + "/DCIM/Camera/2.jpg";
matchingDemo(mainImgPath, templateImgPath, resultImgPath, Imgproc.TM_SQDIFF);
}
});
}
public void matchingDemo(String imgPath,String templatePath,String resPath, int matchType){
Mat img = Imgcodecs.imread(imgPath);
Mat templ = Imgcodecs.imread(templatePath);
int result_cols = img.cols() - templ.cols() + 1;
int result_rows = img.rows() - templ.rows() + 1;
Mat result = new Mat(result_rows, result_cols, CvType.CV_32FC1);
Imgproc.matchTemplate(img, templ, result, matchType);
int type = Imgproc.THRESH_TOZERO;
Imgproc.threshold(result, result, 0.8, 1., type);
Core.normalize(result, result, 0, 1, Core.NORM_MINMAX, -1, new Mat());
Core.MinMaxLocResult mmr = Core.minMaxLoc(result);
Point matchLoc;
if (matchType == Imgproc.TM_SQDIFF || matchType == Imgproc.TM_SQDIFF_NORMED) {
matchLoc = mmr.minLoc;
} else {
matchLoc = mmr.maxLoc;
}
Imgproc.rectangle(img, matchLoc, new Point(matchLoc.x + templ.cols(),
matchLoc.y + templ.rows()), new Scalar(0, 255, 0));
Imgcodecs.imwrite(resPath, img);
Mat image = Imgcodecs.imread(resPath);
Bitmap bm = Bitmap.createBitmap(image.cols(),image.rows(), null);
Utils.matToBitmap(image, bm);
ImageView iv = (ImageView) findViewById(R.id.imgResult);
iv.setImageBitmap(bm);
}
}
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Всем добрый вечер, я не смог найти где скачать JDK 8 для семерки 32bitВот тут http://free-software
given a matrix, need to create class Map, that creats a Pane (Javafx)
есть ли онлайн тесты на java по русски?? скиньте ссылки
Пытаюсь использовать аннотации Lombok @Getter @Setter, поставил галочку Enable annotation processingНо, получить возможность вызвать getter setter не получил