Tag: opencv

将OpenCV矩阵循环转换为JavaCV

不久前得到了O’Reilly的“学习OpenCV”一书,从那以后我一直在忙着将我看到的所有示例代码从OpenCV转换为JavaCV,通常也会进行一些我自己的修改。 我一直试图尽可能地保持纯OpenCV(C语言)代码并避免使用Java。 例如,我直接通过JavaCV中的OpenCV highgui包实现了所有的接口元素,而不是通过Java Swing。 通过这样做,我希望以相对较短的顺序学习OpenCV库和一些C,以及建立一个有用的函数库,如果我决定稍后切换到纯OpenCV,我将能够轻松地转换为C. 无论如何,我对C知之甚少,有时在处理指针时遇到麻烦。 本书推荐使用以下代码作为迭代3通道矩阵的最佳方法: float sum( const CvMat* mat ) { float s = 0.0f; for(int row=0; rowrows; row++ ) { const float* ptr = (const float*)(mat->data.ptr + row * mat->step); for( col=0; colcols; col++ ) { s += *ptr++; } } return( s ); } 以下是此代码的附加说明: 在将指针计算到矩阵中时,请记住矩阵元素数据是联合。 因此,在取消引用此指针时,必须指示union的正确元素才能获得正确的指针类型。 然后,要设置该指针,必须使用矩阵的step元素。 如前所述,step元素以字节为单位。 […]

在Android中使用OpenCV将NV21转换为RGB

我想在Android中使用OpenCV。 所以我首先通过并排放置两个SurfaceView来测试OpenCV。 一个SurfaceView用于从相机预览输出(输出格式显然是NV21)。 另一个SurfaceView在通过OpenCV后显示相同的预览,如下面的代码所示: public void onPreviewFrame(byte[] data, Camera camera) { // TODO Auto-generated method stub if( mYuv != null ) mYuv.release(); mYuv = new Mat( height + height/2, width, CvType.CV_8UC1 ); mYuv.put( 0, 0, data); Mat mRgba = new Mat(); Imgproc.cvtColor( mYuv, mRgba, Imgproc.COLOR_YUV2RGB_NV21, 4 ); Bitmap map = Bitmap.createBitmap( width, height, Bitmap.Config.ARGB_8888 ); […]

在opencv中下面的代码行是什么意思?

这段代码行的含义是什么?如何将此代码转换为javacv? gray = Scalar::all(255); 这是与此代码行相关的完整代码。 Mat src = imread(“in.jpg”), gray; cvtColor(src, gray, CV_BGR2GRAY); threshold(gray, gray, 230, 255, THRESH_BINARY_INV); vector hierarchy; vector<vector > contours; findContours(gray, contours, hierarchy, CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE); gray = Scalar::all(255); 有人可以解释一下吗?

在JavaCV中传递给cvFindContours()的参数是什么?

cvFindContours有人可以解释一下cvFindContours方法及其所需的参数是什么? 例如,这是使用OpenCV的代码: hierarchy = cv2.findContours(thresh, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE) 有人可以解释如何使用JavaCV编写这个吗?

显示图像并转换为灰度 – OpenCV for Android,Java API

我正在Eclipse中编写一个使用OpenCV4Android API的Android应用程序。 如何轻松显示Mat图像,仅用于调试? 在C ++中,根据OpenCV教程,您可以执行以下操作: namedWindow( “Display window”, CV_WINDOW_AUTOSIZE );// Create a window for display. imshow( “Display window”, image ); // Show our image inside it. 但是Android API的Java API似乎没有在org.opencv.highgui.Highgui使用namedWindow函数。 另外,我想将图像加载为灰度。 在C ++中,根据imread不在Opencv中工作 ,你会做: imread(“blackandwhite.jpg”, 0); 但Java API的Highgui.imread()只有filename参数。

缺少Java OpenCV – org.opencv.core.Core rectangle()方法

我有openCV-3.0.0 alpha,我在openCV教程网站上找到了一个示例代码。 我曾经使用相同的代码编译它,但是eclipse告诉我无法找到org.opencv.core.Core类中的rectangle()方法。 我自己检查了课程,实际上找不到这种方法。 有谁知道这个方法现在存储在哪个类中? 我在org.opencv.highgui.Highgui类中发现了类似的问题,该类在openCV-3.0.0中已停止使用,并被org.opencv.imgcodecs.Imgcodecs取代

如何生成2小时的空白video

我想生成一个黑色或白色背景(甚至根本没有)的video,持续特定的持续时间(例如2小时)。 能否请您以编程方式快速建议(例如命令行,OpenCV)? 谢谢。

如何使用opencv或javacv识别多边形?

我正在做一个使用图像处理技术来识别不同对象及其长度的项目。 我在javaCV以及OpenCV中经历了很多例子。 但不幸的是我无法识别多边形的T形。 我尝试使用以下矩形识别方法,但我失败了。 public static CvSeq findSquares( final IplImage src, CvMemStorage storage) { CvSeq squares = new CvContour(); squares = cvCreateSeq(0, sizeof(CvContour.class), sizeof(CvSeq.class), storage); IplImage pyr = null, timg = null, gray = null, tgray; timg = cvCloneImage(src); CvSize sz = cvSize(src.width() & -2, src.height() & -2); tgray = cvCreateImage(sz, src.depth(), 1); gray = […]

什么是OpenCV模板匹配Max Min值范围? 需要用作theshold / c ++ / java

我正在使用模板匹配创建一个简单的openCV应用程序,我需要比较在大图像中查找小图像并返回结果为true(如果匹配找到)或false(未找到匹配项)。 Imgproc.matchTemplate(largeImage, smallImage, result, matchMethod); Core.normalize(result, result, 0, 1, Core.NORM_MINMAX, -1, new Mat()); MinMaxLocResult mmr = Core.minMaxLoc(result); double minMaxValue = 1; if (matchMethod== Imgproc.TM_SQDIFF || matchMethod== Imgproc.TM_SQDIFF_NORMED) { minMaxValue = mmr.minVal; useMinThreshold = true; } else { minMaxValue = mmr.maxVal; } 现在的问题是使用这个minMaxValue做出决定(真/假)。 我知道上面两种方法TM_SQDIFF和TM_SQDIFF_NORMED返回低值,而其他方法返回高值,所以我可以有2个不同的阈值并比较一个阈值(取决于模板方法类型)。 因此,如果有人可以解释MinMaxLocResult返回的minVal和maxVal范围是多么好。 是0到1范围? 如果是,对于Max类型模板方法,值1是完美匹配?

Java OpenCV – 从knnMatch中提取好匹配

我正在尝试实现一个非常简单的程序来查找两个图像之间的相似性。 我正在使用ORBfunction检测器和图像描述符执行此任务,我使用knnMatch识别匹配: FeatureDetector detector = FeatureDetector.create(FeatureDetector.ORB); DescriptorExtractor descriptor = DescriptorExtractor.create(DescriptorExtractor.ORB); DescriptorMatcher matcher = DescriptorMatcher.create(DescriptorMatcher.BRUTEFORCE_HAMMING); // DETECTION // first image Mat img1 = Imgcodecs.imread(path1, Imgcodecs.CV_LOAD_IMAGE_GRAYSCALE); Mat descriptors1 = new Mat(); MatOfKeyPoint keypoints1 = new MatOfKeyPoint(); detector.detect(img1, keypoints1); descriptor.compute(img1, keypoints1, descriptors1); // second image Mat img2 = Imgcodecs.imread(path2, Imgcodecs.CV_LOAD_IMAGE_GRAYSCALE); Mat descriptors2 = new Mat(); MatOfKeyPoint keypoints2 = […]