我编写了一个应用程序,根据文本区域对图像进行分割,并根据需要提取这些区域.我试图做的是清洁图像,以便OCR(Tesseract)给出准确的结果.我将以下图像作为示例:
通过tesseract运行此结果会产生广泛不准确的结果.然而,清理图像(使用photoshop)获取图像如下:
给出我期望的结果.第一个图像已经通过以下方法运行,以清除它到那一点:
public Mat cleanImage (Mat srcImage) {
Core.normalize(srcImage, srcImage, 0, 255, Core.NORM_MINMAX);
Imgproc.threshold(srcImage, srcImage, 0, 255, Imgproc.THRESH_OTSU);
Imgproc.erode(srcImage, srcImage, new Mat());
Imgproc.dilate(srcImage, srcImage, new Mat(), new Point(0, 0), 9);
return srcImage;
}
Run Code Online (Sandbox Code Playgroud)
我还能做些什么来清理第一张图像,使其类似于第二张图像?
编辑:这是在运行该cleanImage功能之前的原始图像.
我收到了这个我以前没见过的错误.我正在使用cURL尝试从我的网站获取验证码图像,但我得到此错误而不是我想要的图像.
if(isset($_GET['captcha'])) {
$curl->open("GET","https://mydomain.com");
$curl->exec();
preg_match('/_mobile_sess=[^;]+/', $curl->getHeaders(), $sess);
$_SESSION['cookie'] = $sess[0];
preg_match('/ame="authenticity_token" type=\"hidden\" value=\"(.+?)\"/i',$curl->responseText, $tkn);
$_SESSION['token'] = $tkn[1];
preg_match('/\/signup\/captcha\/([0-9-a-z]+)\.gif/i', $curl->responseText, $cs);
$_SESSION['captchaUrl'] = $cs[1];
$curl->open("GET", "http://mydomain.com" . $cs[0]);
$curl->cookie = $_SESSION['cookie'];
$curl->exec();
echo $curl->responseText;
die;
Run Code Online (Sandbox Code Playgroud)
}
我已经将MIME类型设置<meta http-equiv="Content-Type" content="image/gif">为我的HTML文档,但仍然会遇到同样的问题.
这是我试图输出图像的形式.
if(empty($_SERVER['QUERY_STRING'])){
echo "<center><form method='POST' action='?go'>
<input type='hidden' name='nameC' value='- SAFAL -' ><br/>
<b>User Name</b><br><input name='login' size='30' id='login' value='safal".rand(111111,9999999)."'><br/>
<b>Password</b><br><input name='senha' id='senha' size='30' value='".rand()."'><br/> <br>
<img src='?captcha'><br/>
<input name='cs' id='cs' placeholder='Put The Capcha' size='20' onclick='if(this.value==\"Digite aqui\") this.value=\"\"'><br><br><br>
<input type='submit' …Run Code Online (Sandbox Code Playgroud) 我在尝试从屏幕上单击的点向负方向绘制矩形时遇到问题。我有以下类来模拟 Gyazo 之类的屏幕捕获软件:
class DrawSquare extends JPanel implements MouseListener, MouseMotionListener {
// Components
public JDialog frame;
public Rectangle rectangle;
public BufferedImage bufferedImage;
public Point start, end;
// Variables
public String capturedImage;
public DrawSquare(JDialog frame) {
this.frame = frame;
// Read in crosshair image to replace mouse icon
Toolkit tool = Toolkit.getDefaultToolkit();
Image newImage = getToolkit().getImage("components/cursor.png");
Cursor cursor = tool.createCustomCursor(newImage, new Point (this.frame.getX(), this.frame.getY()), "img");
this.frame.setCursor(cursor);
this.frame.addMouseListener(this);
this.frame.addMouseMotionListener(this);
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g.create(); …Run Code Online (Sandbox Code Playgroud)