相关疑难解决方法(0)

OpenCV C++/Obj-C:检测一张纸/方形检测

我在我的测试应用程序中成功实现了OpenCV平方检测示例,但现在需要过滤输出,因为它非常混乱 - 或者我的代码是错误的?

我对本文的四个角点感兴趣,以减少偏斜(如此)和进一步处理......

输入输出: 输入输出

原始图片:

点击

码:

double angle( cv::Point pt1, cv::Point pt2, cv::Point pt0 ) {
    double dx1 = pt1.x - pt0.x;
    double dy1 = pt1.y - pt0.y;
    double dx2 = pt2.x - pt0.x;
    double dy2 = pt2.y - pt0.y;
    return (dx1*dx2 + dy1*dy2)/sqrt((dx1*dx1 + dy1*dy1)*(dx2*dx2 + dy2*dy2) + 1e-10);
}

- (std::vector<std::vector<cv::Point> >)findSquaresInImage:(cv::Mat)_image
{
    std::vector<std::vector<cv::Point> > squares;
    cv::Mat pyr, timg, gray0(_image.size(), CV_8U), gray;
    int thresh = 50, N = 11;
    cv::pyrDown(_image, pyr, cv::Size(_image.cols/2, _image.rows/2));
    cv::pyrUp(pyr, …
Run Code Online (Sandbox Code Playgroud)

c++ opencv image-processing objective-c computer-vision

171
推荐指数
3
解决办法
11万
查看次数

找到论文的一角

我是openCV的新手,因此在过去的3到4天里一直在努力,我已经检测到纸张边界,现在我想在角落上绘制4个圆圈.

我从这段代码中画出边界

const cv::Point* p = &squares[i][0];

int n = (int)squares[i].size();

polylines(image, &p,&n, 1, true, Scalar(255,255,0), 5, CV_AA);
Run Code Online (Sandbox Code Playgroud)

我是openCV的新手,所以在我看来我有左上角点p-> x和p-> y,但是我如何得到其他角落,我也对这个折线方法中的参数&n感到困惑,这个折线方法怎么样绘制完整的矩形?

当我使用边界矩形时,它并不完美,它给纸张侧面留下了一点空间.

任何帮助都非常感谢

代码是:

- (cv::Mat)finshWork:(cv::Mat &)image
{
// read in the apple (change path to the file)
Mat img0 =image;// imread("/home/philipp/img/apple.jpg", 1);

Mat img1;
cvtColor(img0, img1, CV_RGB2GRAY);

// apply your filter
Canny(img1, img1, 100, 200);

// find the contours
vector< vector<cv::Point> > contours;
findContours(img1, contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);

/////for SQUARE CODE
std::vector<std::vector<cv::Point> > squares;
std::vector<cv::Point> approx;
for( size_t i = …
Run Code Online (Sandbox Code Playgroud)

iphone opencv image-processing objective-c ios

11
推荐指数
1
解决办法
7626
查看次数

从文本中提取矩形中的单词

我正在努力从BufferedImage中提取快速有效的矩形字.
例如,我有以下页面:(编辑!)图像被扫描,因此它可能包含噪音,歪斜和失真.
在此输入图像描述


如何在没有矩形的情况下提取以下图像:(编辑!)我可以使用OpenCv或任何其他库,但我是高级图像处理技术的新手. 在此输入图像描述

编辑

我已经使用了karlphillip 这里建议的方法,它工作得体.
这是代码:

    package ro.ubbcluj.detection;

import java.awt.FlowLayout;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.WindowConstants;

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfByte;
import org.opencv.core.MatOfPoint;
import org.opencv.core.Point;
import org.opencv.core.Scalar;
import org.opencv.core.Size;
import org.opencv.highgui.Highgui;
import org.opencv.imgproc.Imgproc;

public class RectangleDetection {

public static void main(String[] args) throws IOException {
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    Mat image = loadImage();
    Mat grayscale = convertToGrayscale(image);

    Mat treshold = tresholdImage(grayscale);
    List<MatOfPoint> contours …
Run Code Online (Sandbox Code Playgroud)

java opencv bufferedimage extract image-processing

8
推荐指数
1
解决办法
3276
查看次数

从X射线图像中提取手骨

我有一只手的X射线图像.我需要自动提取骨骼.我可以使用不同的技术轻松分割手.但我需要得到骨头并使用这些技术无济于事.有些骨头比其他骨头更亮,所以如果我使用阈值处理,其中一些骨头会消失,而其他骨骼则会变得更清晰.我想也许我应该只限制一个手的区域?是否可以限制不是正方形的投资回报率?哦,也许你有任何其他解决方案,建议?也许有一些像OpenCV这样的图书馆?任何帮助都会非常棒!

扩展:

原始图像 预期产出

                 原始图像                      预期输出

opencv image-processing image-segmentation

7
推荐指数
1
解决办法
2511
查看次数

如何确定感兴趣的区域,然后使用OpenCV裁剪图像

在这里问了一个类似的问题,但更多的是关注tesseract.

我有一个示例图像如下.我想将白色方块设为我感兴趣的区域,然后裁剪掉那个部分(正方形)并用它创建一个新图像.我将处理不同的图像,因此正方形不会始终位于所有图像中的相同位置.所以我需要以某种方式检测广场的边缘.

在此输入图像描述

我可以执行哪些预处理方法来实现结果?

c++ python opencv numpy image-processing

1
推荐指数
1
解决办法
1万
查看次数