㈠ python3.6.3 curses newwin 方法為何用不了
python 中curses封裝了c語言的游跡curses,把c中復雜部分簡單化,比如addstr(),mvaddstr(),mvwaddstr()合並成了一個addstr()方法。
一、語法入門
1、打開和關閉一個curses 應用程序
在任何代碼執行前都先要初始化curses。初始化操作就是調用initscr()函數,如下。該函數根據不同設備返回一個window對象代表整個屏幕,這個window對象通常叫做stdscr,和c語言報錯一致。
import curses
stdscr = curses.initscr()
使用curses通常要關閉屏幕回顯,目的是讀取字元僅在適當的環境下輸出。這就需要調用noecho()方法
curses.noecho()
應用程序一般是立即響應的,即不需要按回車就立即回應的,這種模式叫cbreak模式,相反的常用的模式是緩沖輸入模式。開啟立即cbreak模式代碼如下。
curses.cbreak()
終端經常返回特殊鍵作為一個多位元組的轉義序列,比如游標鍵,或者導航鍵比如Page UP和Home鍵 。curses可以針對這些序列做一次處理,比如curses.KEY_LEFT返回一個特殊的值。要完成這些工作,必須開啟鍵盤模式。
stdscr.keypad(1)
關閉curses非常簡單,如下:
curses.nocbreak()#關閉字元終端功能(只有回車時才發生終端)stdscr.keypad(0)
curses.echo() #打開輸入回顯功能
調用endwin()恢復默認設置
curses.endwin()
調試curses時常見的問題就是curses應用程序結束後沒有重置終端到之前的狀態,把終返襲端弄的一團糟。python中該問題經常是因為代碼有bug,發送異常引起的。比如鍵盤敲入字元後屏幕不回顯,這讓shell用起來非常困難。
為了避免這樣的問題,可以導入curses.wrapper模塊。這個函數做了一些初始化的工作,包括上面提到的和顏色的初始化。然後再執行你提供的函數,最後重置。而且被調用的函數寫在try-catch中。
2、打開新窗口和pad
通常調用initscr()獲取一個window對象代表全部屏幕。但是很多程序希望劃分屏幕為幾個小的窗口,為了重繪,擦出這些工作在小窗口中獨立進行。newwin()函數就是用來新建一個新的窗口,需要給定窗口尺寸,並返回新的window對象的。
begin_x = 20; begin_y = 7height = 5; width = 40win = curses.newwin(height, width, begin_y, begin_x)
注意:坐標通過是先y後x。這和別的坐標系統不同,但是根深蒂固,寫的時候就這樣現在改太晚嘍。
當調用一個方法去顯示或者擦除文本時,效果不會立即顯示。 為了減少屏幕重繪的時間,curses就先累積這些操作,用一種更有效的方式去顯示。就比如說你的程序先在窗口顯示了幾個字元,然後就清除屏幕,那就沒必要發送初始字元了,因為它們不會被顯示。
因此,curses需要你使用refresh()函數明確指出重繪窗口。
pad
pad是window的特例。pad可以比顯示的屏幕大,一次只顯示pad的一部分。創建一個pad很簡單,只需要提供寬高即可。但是刷新pad需要提供屏幕上顯示的部分pad的坐標。
getstr()獲取一個字元串。因為功能有限不常用。
curses.echo() # Enable echoing of characters# Get a 15-character string, with the cursor on the top lines = stdscr.getstr(0,0, 15)
㈡ 用python編好了蟒蛇圖片後怎麼讓蟒蛇動起來
動畫的原理,是將景象快速地閃現。
要讓圖片動起來拆謹,就先旅燃基呈現圖片,然後擦除圖片,然後再呈現圖片(可以段塵改變位置等)
只要呈現--擦除-呈現的頻率足夠快,就能產生動畫效果。
㈢ python, pygame,請問怎麼讓屏幕擦除前面的畫面
添加上圖一行代碼試試看。陪灶。陸弊。蘆悉扮。
希望能夠幫到你!!
㈣ python3 文件讀寫 注意什麼
open()函數返回一個File對象,並且最常用的用法是使用兩個參數,open(filename,mode)
第一個參數是文件名,第二個參數表示文件的打開方式。只讀方式打開可以使用'r',寫文件可以使用'w'(這個選項會把當前文件夾中存在同名文件時將該文件擦除),'a'可以用來追加內容,任何內容都會被寫入文件的末尾。'r+'會同時讀寫。mode參數是可選參數,如果沒有的話,默認是'r'。
一般情況下,文件都是用文本模式打開的,也就意味著,文件讀寫都是使用某種編碼的,末日呢情況下都是用utf-8編碼。'b'會用二進制形式打開文件。這個時候,文件讀寫都是以位元組的形式。
在文本模式下,默認會把平台相關的換行符(windows平台是\r\n,Linux平台是\n)轉換成\n,在寫文件時,會把\n轉換成平台相關的字元寫入。這種後台的操作對於文本會非常有用,但是對於二進制文件如jpeg或exe文件,則會破壞文件,因此在打開這類文件時千萬要使用二進制模式打開。
㈤ python的串口close()函數關閉不成功
用ser.isOpen()查看返回False,說明ser.close()起作用了啊。用管理員身份打開cmd,再執行腳本試試?
㈥ OpenCV-Python教程:57.圖像修復
基礎
你們可能家裡都會有一些老照片已經有黑點啊,劃痕啊等。你有想過修復它們么?我們不能簡單的在繪圖工具里把他們擦除了就完了。因為這樣只是把黑色的東西變成白色的而已,實際上沒用。在這種情況下,會用到一種技術叫圖像修復。基本的思想很簡單:用周圍的像素替換壞掉的像素,這樣看上去就和周圍一樣了。比如下面這張:
很多演算法被設計來干這個,OpenCV提供了兩個,可以用同一個函數來訪問: cv2.inpaint()
第一個演算法是基於論文" An Image Inpainting Technique Based on the Fast Marching Method"。 是基於快速匹配方法的。假設圖像里的一個區域要修復。演算法從這個區域的邊界開始,逐漸地進入區域,把邊界內的所有東西填充上。它取要修復的部分周圍的一個像素周圍的一小片鄰居。這個像素被周圍已知的像素的標准加權和替換掉。選擇權重是很重要的。要修復的點周圍像素的權重較高。和正常邊界近的,還有在邊界輪廓上的像素的權重較高。當像素被修復以後,它會通過快速匹配方法(FMM)移動到最近的像素。FMM保證那些已知像素周圍的像素首先被修復,所以這個就像人工啟發式的操作一樣。這個演算法使用標志cv2.INPAINT_TELEA開啟。
第二個演算法基於論文" Navier-Stokes, Fluid Dynamics, and Image and Video Inpainting ".這個演算法基於流體動力學和偏微分方程。基本原則是啟發式。它首從已知區域先沿著邊緣到未知區域訪問(由於邊緣應該是連續的)。在匹配邊要修復區域邊界的梯度向量時持續畫等值線(把相同亮度的點用線連起來,類似於輪廓線)。這時候用到流體動力學。之後會填充顏色以減小最小方差。這個演算法用標志cv2.INPAINT_NS啟用。
編碼
我們需要創建和輸入圖像相同大小的掩圖,需要修復的區域對應的像素要非0.剩下的就簡單了。我的圖像被一些黑色劃痕給破壞了(實際上是我自己加的)。我用繪圖工具對應的標記出來。
看下面的結果。第一個圖片是輸入圖像,第二個是掩圖,第三個是用第一種演算法的結果,最後一張是第二種演算法的結果。
END
㈦ 怎麼刪除esp32中燒錄的代碼
1,擦除
當因為某些意外原因導致MicroPython運行後輸出亂碼,刷固件也不能恢復時,需要清理(擦除)Flash,然後在刷固件才能恢復正常。
使用esptool.py可以很方便的擦除ESP8266的Flash。注意下面命令中的串口需要根據實際串口設定,如果擦除的速度過快(不到1S),很可能沒有完全擦除,這是可以再擦除一次。擦除時和刷固件一橡手樣,需要保持按住Flash按鍵然後再按下並釋放RESET按鍵,然後在進行擦除。
在Linux下
esptool.py --port /dev/ttyUSB0 erase_flash
在Windows下
c:\Python27\Scripts\esptool.py --port /COM9 erase_flash
因為esptool.py需要使用python2,所以我們先需要安裝python2,並將python加入中虧系統路徑(path)。
安裝python的包管理器pip,通常是使用get-pip.py進行安裝。在 https://pip.pypa.io/en/latest/installing/ 可以找到安裝的說明和需要下載的文件,按照說明可以很容易安裝賣如神pip。(如果同時安裝了python2和python3,pip可能默認是pip3,需要用pip2來代替下面的pip,在Linux上需要用sudo許可權安裝)。
用pip安裝esptool
pip install esptool
因為esptool需要使用串口,所以還需要安裝pyserial。
㈧ 在python中如何對繪制的圖案進行擦除
用背景色再畫一次。
㈨ 用python解壓圖片並列印代碼
import zipfile
# 傳入壓縮文件zfile.zip獲取相關信息
zip_file = zipfile.ZipFile('zfile.zip')
# 獲取壓縮文件中的內容
f_content = zip_file.namelist()
# 壓縮前的大小
f_size = zip_file.getinfo('zfile/a.txt').file_size
# 壓縮後的大小
c_size = zip_file.getinfo('zfile/a.txt').compress_size
ZipFile 對象有一個 namelist()方法,返回 ZIP 文件中包含的所有文件和文件夾 的字元串的列表。這些字元串可以傳遞給 ZipFile 對象的 getinfo()方法,返回一個關 於特定文件的 ZipInfo 對象。ZipInfo 對象有自己的屬性,諸如表示位元組數的 file_size 和 compress_size,它們分別表示原來文件大小和壓縮後文件大小。ZipFile 對象表示 整個歸檔文件,而 ZipInfo 對象則保存該歸檔文件中每個文件的有用信息。
從 ZIP 文件中解壓縮
ZipFile 對象的 extractall()方法從 ZIP 文件中解壓縮所有文件和文件夾,放到當 前工作目錄中。
import zipfile
zip_file = zipfile.ZipFile('zfile.zip')
# 解壓
zip_extract = zip_file.extractall()
zip_extract.close()
運行這段代碼後, example.zip 的內容將被解壓縮到 C:。 或者, 你可以向 extractall()傳遞的一個文件夾名稱,它將文件解壓縮到那個文件夾,而不是當前工作 目錄。如果傳遞給 extractall()方法的文件夾不存在,它會被創建。例如,如果你用 exampleZip.extractall('C: delicious')取代處的調用,代碼就會從 example.zip 中解壓 縮文件,放到新創建的 C:delicious 文件夾中。
ZipFile 對象的 extract()方法從 ZIP 文件中解壓縮單個文件。
創建和添加到 ZIP 文件
要創建你自己的壓縮 ZIP 文件,必須以「寫模式」打開 ZipFile 對象,即傳入'w' 作為第二個參數(這類似於向 open()函數傳入'w',以寫模式打開一個文本文件)。
如果向 ZipFile 對象的 write()方法傳入一個路徑,Python 就會壓縮該路徑所指 的文件,將它加到 ZIP 文件中。write()方法的第一個參數是一個字元串,代表要添 加的文件名。第二個參數是「壓縮類型」參數,它告訴計算機使用怎樣的演算法來壓 縮文件。可以總是將這個值設置為 zipfile.ZIP_DEFLATED(這指定了 deflate 壓縮 演算法,它對各種類型的數據都很有效)。
import zipfile
zip_file = zipfile.ZipFile('new.zip','w')
# 把zfile整個目錄下所有內容,壓縮為new.zip文件
zip_file.write('zfile',compress_type=zipfile.ZIP_DEFLATED)
# 把c.txt文件壓縮成一個壓縮文件
# zip_file.write('c.txt',compress_type=zipfile.ZIP_DEFLATED)
zip_file.close()
這段代碼將創建一個新的 ZIP 文件,名為 new.zip,它包含 spam.txt 壓縮後的內容。
要記住,就像寫入文件一樣,寫模式將擦除 ZIP 文件中所有原有的內容。如果 只是希望將文件添加到原有的 ZIP 文件中,就要向 zipfile.ZipFile()傳入'a'作為第二 個參數,以追加模式打開 ZIP 文件。
㈩ python如何在畫布上寫的字怎樣擦除
文字
python刪除圖片文字_ps去掉圖片上的文字的6種方法
鶴立煙雨
原創
關注
0點贊·1264人閱讀
怎麼修改圖片上的文字
在網上我們都會看到很多漂亮的圖片,有時候就想要保存下來,自己做網頁的時候用;但是有很多圖片都是上面有些文字,梁粗用在自己的網站上面又不合適,這時我們就可以用photoshop處理掉,至於怎麼處理掉我們就來看以下的實例:
1、打開photoshop,文件/打開。打開一個你收集好的且有文字的美圖。(如下圖)這張圖片有兩種情況,一個是顏色上面的文字,去掉就很方便;一種就是圖片上面的文字,去掉就有點麻煩。
(圖1):打開有文字圖片
2、首先我們要抹掉的是上面的那點文字。因為背景色相對來說比較方便。。不過這不是單一的背景色,有點效果的。所以我們就可以用選取,拉長覆蓋的方法。首先我們用選取工具,選中文字前面一點的色塊。如圖:
(圖2):選取文字前面的色塊
3、按「Ctrl+T」自由變換,然後這個選區就會出現一個有四個節點的選框,我們拖曳右邊的那個節點判旁,往有右邊有文字的方向拉。這時我們就可以看到圖片上的文字就被覆蓋掉了。好了,這一區域的文字就被處理掉了。這是去掉簡單的背景圖片上面的文字。
(圖3):自由變換覆蓋背景上的文字
4、現在我們需要更改圖片背景上面的文字。這個就稍微有點難度,有時候抹掉的還是很不清晰,有點模糊。不過我們現橡沖鎮在用的方法很簡單。首先我們用放大工具放大我們需要抹掉的文字那塊區域,(為了方便操作,同時也可以讓到時候抹掉的區域更溶入其它地方)如圖:
(圖4):放大需抹掉的文字區域
5、我們現在利用「修補」工具來把其它的有文字的地方給補上其它的圖片。選中「修補」工具,在和文字區域圖片附近或圖片相近的地方選擇一塊選區,畫一個選區,然後按住「Ctrl+Alt」兩個鍵,移動並且復制這個選區,就把有文字的地方給覆蓋掉了。
(圖5):修補文字區域
6、因為有些圖片文字區域的背景圖片並不是一樣的,所以我們可以重復選擇,重復拖拉去覆蓋相近的文字區域。圖片越相近,抹掉的效果就越好。現在我們修補完了,可以看到上面的文字被抹掉了。現在看上去還是有點的區別和其它地方,不過不仔細看還是看不出來。如圖:
(圖6)文字被抹掉後的圖片
7、我們做完後可以所抹掉的地方再放大看一下,和現在縮小的時候的進行一下對比。
(圖7)放大和縮小時我們抹掉的效果圖對比
7、我們做完後可以所抹掉的地方再放大看一下,和現在縮小的時候的進行一下對比。我們看到效果圖上面還是會有點硬,和其它地方不溶和,我們可以用模糊工具稍微模糊一下。
(圖8)模糊工具
圖片上的文字被處理掉了,就可以把你喜歡的圖片放到自己網上了,下次再碰到好看的圖片就可以收集起來了。