最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

用python控制掃描儀的嘗試

2023-08-14 22:23 作者:repalm  | 我要投稿

用掃描儀軟件控制掃描相機(jī),拍出的畫面是被壓縮過的,因?yàn)檐浖凑誂4幅面來掃描,與我掃描相機(jī)4*12厘米的比例完全不符,但是官方或者第三方掃描儀軟件都無法單獨(dú)改變XY軸的分辨率,掃描范圍的修改也是有限的,因此就需要一些編程技巧來解決問題,這里我用的是python 3.67。

用愛普生掃描軟件拍出來的照片原圖

這張圖片的分辨率為:11339*10200,拉到ps里,把寬度改成31339之后,畫面才稍微正常一些,但是這樣會損失一部分畫質(zhì)(其實(shí)擴(kuò)放很大,也看不出來)


twain是第三方開源的掃描儀驅(qū)動程序,它可以讓你不必掌握復(fù)雜的編程知識,就能靈活的控制掃描儀,軟件的安裝和調(diào)試,我參考了這篇文章:https://blog.csdn.net/runwuwusheng1230/article/details/121490944

文章最下面給出的twain_module.py是我需要的,把它拷貝下來放在python的這個文件夾里:C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\Lib\site-packages

按照文章里的案例測試掃描儀,雖然軟件的安裝并不復(fù)雜,但安裝成功,也不保證就能順利的實(shí)現(xiàn)控制,這點(diǎn)我沒有深入研究,只是通過換電腦來解決的。。。


平臺搭建好之后,就可以進(jìn)入?yún)?shù)設(shè)置環(huán)節(jié),

還是twain_module.py這個文件,拉到最下面,找到如下代碼:


if dpi:

??????????????? sd.set_capability(ICAP_XRESOLUTION, TWTY_FIX32, dpi)?

??????????????? sd.set_capability(ICAP_YRESOLUTION, TWTY_FIX32, dpi)??

修改dpi,就能改變x或者y軸的掃描分辨率

對了,掃描腳本還沒貼出來,其實(shí)很簡單,就兩行:


import twain_module

twain_module.acquire(r'./test.bmp',dpi=200,pixel_type='gray',frame=(0.0,0.0,8.27,9.9))


括號里的參數(shù)分別代表:定義照片名和格式,dpi(按我的經(jīng)驗(yàn),這個地方最好不要動),像素類型:灰度;彩色;黑白,照片坐標(biāo)(左,上,右,下)單位是英寸。


照片坐標(biāo)后兩個數(shù),就是在軟件理解下,照片的“縱向尺寸和橫向尺寸”,由于掃描相機(jī)去除了反射鏡,掃描區(qū)域的寬度從A4的210mm變成了掃描CCD的長度,就是40mm,掃描長度由A4紙的297mm變成了我買的軌道行程,就是120mm,但是這twain目的仍然是讓你去掃描文件而不是拍照的,所以在掃描尺寸的設(shè)置上,還得按照A4紙的尺寸進(jìn)行轉(zhuǎn)換,畢竟驅(qū)動電機(jī)用的還是原裝的那套機(jī)制,步進(jìn)電機(jī)的步距角,步數(shù),都沒變,我就假裝它掃的還是A4那么大的紙張,只是通過修改照片的長度,讓電機(jī)多轉(zhuǎn)幾圈,這樣我就可以實(shí)現(xiàn)3:1的畫幅比例,官方軟件是沒法這么玩的,你只能通過損失寬度來實(shí)現(xiàn)3:1畫幅,一根CCD上的像素沒法被充分利用,而且畫幅也變小了,經(jīng)過測試,長度為9.9英寸時(shí),我的第一代導(dǎo)軌正好走滿,但是我換了新導(dǎo)軌之后,這個長度還要再加一點(diǎn)。所以frame這個參數(shù)的目的,放在掃描相機(jī)上,就是讓CCD走滿導(dǎo)軌的行程。


圖片實(shí)際的比例,還是通過修改dpi來實(shí)現(xiàn)的,針對愛普生v30系列掃描儀,X軸dpi為1800,Y軸dpi為600是比較合適的組合,這個dpi是不能隨意寫的,如果改成X=1200,Y=400,或者X=2400,Y=800,都有可能報(bào)錯,具體原因我沒有研究過。


運(yùn)行這個腳本,得到的圖片,直接就是3:1比例的寬畫幅,不需要再到ps里修改分辨率了(還需要旋轉(zhuǎn))。

但是也有一些問題:

  • bmp格式的圖片在ps圖層里顯示為“索引”,需要選擇“圖像-模式-RGB顏色”之后,圖片才可以編輯

  • 無法使用IR作為光源類型,如果不設(shè)置光源類型,拍出來的灰度圖會有重影,像拍攝彩色圖片那樣,是三個通道的直接疊加

    /* ICAP_LIGHTSOURCE values (LS_ means Light Source) */

#define TWLS_RED 0
#define TWLS_GREEN 1
#define TWLS_BLUE 2
#define TWLS_NONE 3
#define TWLS_WHITE 4
#define TWLS_UV 5
#define TWLS_IR 6

  • pixel_type='gray'的灰度最高只能是8位,而官方或者vuescan都可以掃描16位灰度

    關(guān)于這個問題,官網(wǎng)給出了解釋:

    ICAP_BITDEPTH,在twain 3.8或3.9版本里,對于灰度圖,默認(rèn)給的位寬都是8bit,如果要使用12,14,16bit位寬的話,另一個參數(shù)ICAP_XFERMECH 應(yīng)該設(shè)置成 TWSX_MEMORY模式,它還有另外兩個模式,TWSX_NATIVE,?TWSX_FILE,默認(rèn)值是TWSX_NATIVE,就是說掃描出來的原始數(shù)據(jù)先放掃描儀內(nèi)存里的時(shí)候,才可以使用更高的位寬,這里我還沒有找到現(xiàn)成的案例,暫時(shí)先不研究它了。

最后放一個epson官方的twain頭文件解釋,看這個可以解決twain編程里遇到的絕大部分問題:

https://www.epsondevelopers.com/twain-programming-guide-epson-scan/capability-reference/






用python控制掃描儀的嘗試的評論 (共 條)

分享到微博請遵守國家法律
临漳县| 静宁县| 大化| 松桃| 宣威市| 温州市| 崇阳县| 湘潭县| 浦城县| 泗洪县| 新巴尔虎右旗| 民丰县| 八宿县| 宜宾县| 云浮市| 万载县| 交城县| 华池县| 叙永县| 高安市| 天等县| 白城市| 金昌市| 荔波县| 胶南市| 西盟| 枝江市| 曲周县| 防城港市| 绥德县| 陈巴尔虎旗| 电白县| 荃湾区| 汝阳县| 永登县| 庆阳市| 千阳县| 五寨县| 保康县| 祥云县| 万全县|