Tag: opencv

OpenCV C ++ calcHist到Java

我正在尝试在我的Android设备上运行一些c ++代码; 但是,我遇到了一个我正在使用的Mat类型的小问题。 我试图转换的代码如下(第二个函数调用第一个): static Mat histc_(const Mat& src, int minVal=0, int maxVal=255, bool normed=false) { Mat result; // Establish the number of bins. int histSize = maxVal-minVal+1; // Set the ranges. float range[] = { static_cast(minVal), static_cast(maxVal+1) }; const float* histRange = { range }; // calc histogram calcHist(&src, 1, 0, Mat(), result, 1, […]

如何在命令行中运行包含OpenCV代码并使用ant创建的.jar文件?

我试图从Ubuntu控制台运行一个小的java类,它包含这样的OpenCV代码: import org.opencv.core.Core; import org.opencv.core.Mat; import org.opencv.core.CvType; import org.opencv.core.Scalar; class SimpleSample { static{ System.loadLibrary(Core.NATIVE_LIBRARY_NAME); } public static void main(String[] args) { System.out.println(“Welcome to OpenCV ” + Core.VERSION); Mat m = new Mat(5, 10, CvType.CV_8UC1, new Scalar(0)); System.out.println(“OpenCV Mat: ” + m); Mat mr1 = m.row(1); mr1.setTo(new Scalar(1)); Mat mc5 = m.col(5); mc5.setTo(new Scalar(5)); System.out.println(“OpenCV Mat […]

如何在openCV中将轮廓转换为图像中心?

我正在研究android中的图像处理项目。 目前我的任务是提取对象并将其转换为图像的中心,以便我可以轻松地从中提取特征。 我已经提取了对象,现在我想将其转换为图像的中心并旋转它,使其在图像上水平对齐。 我在Android中使用OpenCV进行图像处理。 任何帮助都非常感谢。 谢谢

OpenCv android:将图像的一部分复制到新的Mat

我是OpenCV的新手,并试图通过实施来学习。 我需要绘制我在新Mat中检测到的轮廓,以便我可以使用它们。 这是我的原始图片: 完成一些工作后,我通过查找和绘制轮廓来实现这一目标: 这是我的代码 m = Utils.loadResource(MainActivity.this, R.drawable.sheet1, Highgui.CV_LOAD_IMAGE_COLOR); Bitmap bm = Bitmap.createBitmap(m.cols(), m.rows(),Bitmap.Config.ARGB_8888); Imgproc.cvtColor(m, m, Imgproc.COLOR_BGR2GRAY); Imgproc.medianBlur(m, m, 3); Imgproc.threshold(m, m, 0, 255, Imgproc.THRESH_OTSU); Core.bitwise_not(m, m); Imgproc.dilate(m, m, Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(1,118))); //Contours detection java.util.List contours = new ArrayList(); Imgproc.findContours(m, contours, new Mat() ,Imgproc.RETR_EXTERNAL , Imgproc.CHAIN_APPROX_SIMPLE); Imgproc.cvtColor(m, m, Imgproc.COLOR_GRAY2BGR); //Contour drawing Mat matArray = […]

在SWTcanvas上显示IplImage(JavaCV)

我正在使用JavaCV进行大学项目。 它本质上是一个运动检测器。 我使用OpenCVFrameGrabber类从网络摄像头获取帧,我想在我的GUI上显示抓取的帧。 我正在使用SWT,我认为将帧显示到Canvas组件中会很好。 我有一个问题,因为OpenCVFrameGrabber提供图像作为IplImage类的实例,SWT使用org.eclipse.swt.graphics.Image图像类。 所以我应该将图像从IplImage转换为SWT Image。 做这个的最好方式是什么?

Android中的Opencv ANN_MLP培训

我在opencv C ++中实现了一个ANN字符分类器。 我创建了一个模型: cv::Mat layers(3,1,CV_32S); layers.at(0,0) = ATTRIBUTES;//400 layers.at(1,0)=25;//hidden layer layers.at(2,0) =CLASSES;// eg. 10 CvANN_MLP nnetwork(layers, CvANN_MLP::SIGMOID_SYM,0.6,1); CvANN_MLP_TrainParams params( cvTermCriteria(CV_TERMCRIT_ITER+CV_TERMCRIT_EPS, 1000, 0.000001), CvANN_MLP_TrainParams::BACKPROP, 0.1, 0.1); int iterations = nnetwork.train(training_set, training_set_classifications,cv::Mat(),cv::Mat(),params); CvFileStorage* storage = cvOpenFileStorage( “C:\\example\\myModel.xml”, 0, CV_STORAGE_WRITE ); nnetwork.write(storage,”OCR”); cvReleaseFileStorage(&storage); 现在,我的模型存储在C:/example/myModel.xml中当我想使用ANN分类器时,我在C ++中使用以下代码: CvANN_MLP nnetwork; CvFileStorage* storage = cvOpenFileStorage(“C:\\example\\myModel.xml”, 0, CV_STORAGE_READ ); CvFileNode *n = […]

Java OpenCV训练SVM错误 – 输入样本必须是1维向量

我想检测给定图像上的微笑,但是我得到一个错误的参数错误: OpenCV Error: Incorrect size of input array (Input sample must be 1-dimensional vector) in cvPreparePredictData, file ..\..\..\..\opencv\modules\ml\src\inner_functions.cpp, line 1107 Exception in thread “main” CvException [org.opencv.core.CvException: cv::Exception: ..\..\..\..\opencv\modules\ml\src\inner_functions.cpp:1107: error: (-201) Input sample must be 1-dimensional vector in function cvPreparePredictData ] 在detectSmile(Mat face)方法的最后一行。 整个代码: public class SmileDetector { private CascadeClassifier faceDetector; private Mat image; private Mat […]

线程“main”中的exceptionjava.lang.UnsatisfiedLinkError:java.library.path中没有opencv_java249

我正在尝试在我的32位笔记本电脑上设置OpenCV,但我不断收到一条令我困惑的错误信息: Exception in thread “main” java.lang.UnsatisfiedLinkError: no opencv_java249 in java.library.path at java.lang.ClassLoader.loadLibrary(Unknown Source) at java.lang.Runtime.loadLibrary0(Unknown Source) at java.lang.System.loadLibrary(Unknown Source) at hello.main(hello.java:8) 我尝试过切换一些东西,比如进入用户库并将原生库位置更改为\ x64而不是\ x86,但这没有用。 我还确保我的Java项目将OpenCV-2.4.9作为其库之一。 我也试过’清理’所有项目,但这没有用(它有没有?)。 所以我已经按照设置教程中的所有说明进行操作,但仍然无法正常工作。 有谁知道问题可能在这里? 提前致谢…

如何将mat(OpenCV)转换为图像(JavaFX)?

如何将mat(OpenCV)转换为图像(JavaFX)? 我认为这不是最好的方法: MatOfByte byteMat = new MatOfByte(); Highgui.imencode(“.bmp”, mat, byteMat); return new Image(new ByteArrayInputStream(byteMat.toArray())); PS Image – import javafx.scene.image.Image;

使用Java在OpenCV中使用K-means聚类像素

我目前正在尝试开发Android应用。 我试图将一张叶子的图像从RBG转换为HSV,以产生一个饱和值空间(没有色调)的图像。 接下来,我尝试使用K-means生成一个图像,它应该显示蓝色作为背景,绿色表示叶子(前景对象)。 但是,我不知道在OpenCV中使用K-means函数后如何显示图像。 Imgproc.cvtColor(rgba, mHSV, Imgproc.COLOR_RGBA2RGB,3); Imgproc.cvtColor(rgba, mHSV, Imgproc.COLOR_RGB2HSV,3); List hsv_planes = new ArrayList(3); Core.split(mHSV, hsv_planes); Mat channel = hsv_planes.get(2); channel = Mat.zeros(mHSV.rows(),mHSV.cols(),CvType.CV_8UC1); hsv_planes.set(2,channel); Core.merge(hsv_planes,mHSV); Mat clusteredHSV = new Mat(); mHSV.convertTo(mHSV, CvType.CV_32FC3); TermCriteria criteria = new TermCriteria(TermCriteria.EPS + TermCriteria.MAX_ITER,100,0.1); Core.kmeans(mHSV, 2, clusteredHSV, criteria, 10, Core.KMEANS_PP_CENTERS); 使用k-means后我该怎么做才能显示图像?