我從電影截圖中抓取字幕。 一個例子 如何從PHP截圖抓取字幕?
會搶
嘿,爲什麼我們不都只是放鬆,是吧?
與小標題沒有任何關係。它是截圖。由於它是一個字幕,我們知道字體大小等,如果這將使它更容易抓住。
我知道你們大多數人會說PHP OCR庫,但由於背景總是不同,它看起來不起作用。
我從電影截圖中抓取字幕。 一個例子 如何從PHP截圖抓取字幕?
會搶
嘿,爲什麼我們不都只是放鬆,是吧?
與小標題沒有任何關係。它是截圖。由於它是一個字幕,我們知道字體大小等,如果這將使它更容易抓住。
我知道你們大多數人會說PHP OCR庫,但由於背景總是不同,它看起來不起作用。
不同的背景不應該是一個問題,你可以使用圖像庫去除任何不是文本顏色的東西。
這裏有一個簡單的例子,讓我的意思一個體面的想法,它會替換比#f5f5f5
與#000000
下任何顏色,
<?php
$im = imagecreatefromjpeg("img.jpg");
for ($x = imagesx($im); $x--;)
{
for ($y = imagesy($im); $y--;)
{
$rgb = imagecolorat($im, $x, $y);
if ((($rgb >> 16) & 0xFF) <= 245
&& (($rgb >> 8) & 0xFF) <= 245
&& ($rgb & 0xFF) <= 245)
{
$black = imagecolorallocate($im, 0, 0, 0);
imagesetpixel($im, $x, $y, $black);
}
}
}
header("Content-Type: image/jpeg");
imagejpeg($im);
下面是結果的外觀:
由於您知道字幕將位於底部,因此您可以將大部分頂部關閉。然後通過一個OCR庫運行它。
對於PHP,有PhpOCR,雖然這必須先用示例字母教。
使用外部OCR庫或命令行工具並從PHP調用它可能會更好。對於外部工具,有tesseract和ocropus(我相信ocropus也是由Google贊助的)。
謝謝你。這對預處理很有用。之後,我認爲我應該在服務器端解決方案上工作。即使有一些庫,PHP也不足以做到這一點。 – SNaRe 2012-01-08 17:44:12
我真的不明白你的問題是什麼。 – nmagerko 2012-01-08 17:11:16
'看起來它不起作用。' - 你試過了嗎?我的意思是它可能不會,但至少*嘗試*。而它可能不起作用的原因是因爲幾乎沒有任何東西會。當然,沒有任何預先構建的PHP支持。 – DaveRandom 2012-01-08 17:11:44
「看起來它不起作用」,但你試過了嗎(OCR庫)?字幕通常位於場景的底部,因此您可以修剪大量圖片。 – Alex 2012-01-08 17:12:25