pythonroi
1. 基於python語言的opencv如何把圖片中指定區域截取出來
3-切割輪廓
(這是我網站找的一篇 blog, 親測有效)
2. 「青鋒愛分享」Springboot+Python之RSA加解密方案(RSA深入)二
本篇並缺文章要結合上一節文章一起看。
青鋒愛分享-RSA-Springboot+Python整合
碼雲搜索: 青鋒 會有驚喜哦哦。
通過python生成的公鑰私鑰 格式PKCS1 。
生成pem格式如下:
私鑰頭(-----BEGIN RSA PRIVATE KEY-----)
私鑰尾(-----END RSA PRIVATE KEY-----)
我需要將此私鑰轉換為DER編碼的PKCS8未加密格式,以便絕戚辯與java伺服器代碼一起使用,特別是PKCS8EncodedKeySpec。我已經試過使用rsa和pkcs8命令的OpenSSL,如果有更簡單的辦法,沒有特別需要使仔迅用openssl。
RSA私鑰格式PKCS1和PKCS8相互轉換
RSA公鑰格式PKCS1和PKCS8相互轉換
以下轉換基於openssl命令的操作;
執行:openssl genrsa -out private.pem 1024
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDlLm5++/wwSfq5KfY
H8q1AO/
Uo4OMcmoSz3IAp/7//ewIDAQAB
AoGBAJkMdvF+i9Kzc6YqMC0rfQJ3Zs+vFOtsbmQVAMnQ8JWBCJ1O8d/c60wRQgyb
lFCyO7VXOmoIJqX/Jr2aER8bFtG+
lOdOay7TkE45X/Wc7K9iZs2uuB7sylIvK/HVxxit6FGePa4RAkEA9e+VoAbxBv78
HyxRcStW+
n0UxgT55MPXWGdMRXUUOCNnMilaw/
HvK0IW3zpOgf/+/W565ROI/fjkR1qCD
rZJeHgqMWDlIUuR9+BdBAkAI8+
puQxMonRWTN+
-----END RSA PRIVATE KEY-----
執行:openssl pkcs8 -topk8 -inform PEM -in private.pem -outform pem -nocrypt -out pkcs8.pem
-----BEGIN PRIVATE KEY-----
+n
yHOOfV+XbBPsC7aWblIS3Pqv7/DBJ+/T
uaDSVA4K8Tmx22YC8PZ7HfAJ5/yVaaB2HmpSjg4xyahLPcgCn/v8WcxqDUh6VJ92
/
Q3fic/
+
nt0qVQJAOmMZ67caK+YHZ0M3Rp3adQgF+
//6OHlRQIElgect4wb
CbtfXWu9AfXNbTlXH39bnrlE4j9+
Yt1Zx5df0+
HLU0VEwSQa7rvmY=
-----END PRIVATE KEY-----
執行:openssl rsa -in pkcs8.pem -out pkcs1.pem
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDlLm5++/wwSfq5KfY
H8q1AO/
Uo4OMcmoSz3IAp/7//ewIDAQAB
AoGBAJkMdvF+i9Kzc6YqMC0rfQJ3Zs+vFOtsbmQVAMnQ8JWBCJ1O8d/c60wRQgyb
lFCyO7VXOmoIJqX/Jr2aER8bFtG+
lOdOay7TkE45X/Wc7K9iZs2uuB7sylIvK/HVxxit6FGePa4RAkEA9e+VoAbxBv78
HyxRcStW+
n0UxgT55MPXWGdMRXUUOCNnMilaw/
HvK0IW3zpOgf/+/W565ROI/fjkR1qCD
rZJeHgqMWDlIUuR9+BdBAkAI8+
puQxMonRWTN+
-----END RSA PRIVATE KEY-----
可以看出結果和1是一致的;
執行:openssl rsa -in private.pem -pubout -out public.pem
-----BEGIN PUBLIC KEY-----
+Kosybacfp8hzjn1fl2wT
7Au2lm5SEtz6r+/wwSfq5KfYH8q1AO/
/7/FnMag1IelSfdronPBDxazp6
NUmQZITsYK6CsEl/ewIDAQAB
-----END PUBLIC KEY-----
5. 從pkcs8私鑰中生成pkcs8公鑰
執行:openssl rsa -in pkcs8.pem -pubout -out public_pkcs8.pem
-----BEGIN PUBLIC KEY-----
+Kosybacfp8hzjn1fl2wT
7Au2lm5SEtz6r+/wwSfq5KfYH8q1AO/
/7/FnMag1IelSfdronPBDxazp6
NUmQZITsYK6CsEl/ewIDAQAB
-----END PUBLIC KEY-----
可以看出結果和4是一樣的;
執行:openssl rsa -pubin -in public.pem -RSAPublicKey_out
-----BEGIN RSA PUBLIC KEY-----
MIGJAoGBAOUubn4qizJtpx+nyHOOfV+XbBPsC7aWblIS3Pqv7/DBJ+rkp9gfyrUA
78L3YjASmmU1uupiY5dC7o/TuaDSVA4K8Tmx22YC8PZ7HfAJ5/yVaaB2HmpSjg4x
yahLPcgCn/=
-----END RSA PUBLIC KEY-----
openssl rsa -pubin -in public_pkcs8.pem -RSAPublicKey_out
-----BEGIN RSA PUBLIC KEY-----
MIGJAoGBAOUubn4qizJtpx+nyHOOfV+XbBPsC7aWblIS3Pqv7/DBJ+rkp9gfyrUA
78L3YjASmmU1uupiY5dC7o/TuaDSVA4K8Tmx22YC8PZ7HfAJ5/yVaaB2HmpSjg4x
yahLPcgCn/=
-----END RSA PUBLIC KEY-----
可以看出轉換的結果是一致的;
執行:openssl rsa -RSAPublicKey_in -in pub_pkcs1.pem -pubout
-----BEGIN PUBLIC KEY-----
+Kosybacfp8hzjn1fl2wT
7Au2lm5SEtz6r+/wwSfq5KfYH8q1AO/
/7/FnMag1IelSfdronPBDxazp6
NUmQZITsYK6CsEl/ewIDAQAB
-----END PUBLIC KEY-----
可以看到和上面4,5的結果是一致的;
最後一點:
iOS上用的是pkcs8格式的公鑰
openssl用的是pkcs1格式的公鑰
知道私鑰以後是可以導出公鑰的,所以私鑰一定要保證安全
知道公鑰不可以導出私鑰
解決方案針對是window電腦。
配置:SystemRoot/ System32 環境變數。
1、郵件我的電腦-選擇下【屬性】。
2、選擇高級系統設置
3、選擇【高級】-【環境變數】
4、雙擊打開path,進行編輯
5、 接著我們在這名字後面加【;System32】就可以了。
安裝 Win64 OpenSSL,地址: http://slproweb.com/procts/Win32OpenSSL.html
下載後根據提示一步一步安裝,安裝完成後:
雙擊start.bat 啟動
3. 目標跟蹤(5)使用 Opencv 和 Python 進行對象跟蹤
在本教程中,我們將學習如何基於 Opencv 和 Python 實現對象跟蹤。
首先必須明確目標檢測和目標跟蹤有什麼區別:
我們將首先討論對象檢測,然後討論如何將對象跟蹤應用於檢測。
可能有不同的應用,例如,計算某個區域有多少人,檢查傳送帶上有多少物體通過,或者計算高速公路上的車輛。
當然,看過本教程後,您會很容易地想到數以千計的想法應用於現實生活或可能應用於工業。
在本教程中,我們將使用 3 個文件:
首先我們需要調用highway.mp4文件並創建一個mask:
正如您在示例代碼中看到的,我們還使用了 函數,該函數返回背景比率(background ratio),然後創建mask。
mask可視化結果:
但是,如您所見,圖像中有很多噪點。因此,讓我們通過刪除所有較小的元素來改進提取,並將我們的注意力集中在大於某個面積的對象上。
使用 OpenCV 的cv2.drawContours函數繪制輪廓,我們得到了這個結果。
就本教程而言,分析整個窗口並不重要。我們只對計算在某個點通過的所有車輛感興趣,因此,我們必須定義一個感興趣的區域 ROI 並僅在該區域應用mask。
結果可視化如下:
函數 cv2. 是在開始時添加的,沒有定義參數,現在讓我們看看如何進一步改進我們的結果。history是第一個參數,在這種情況下,它設置為 100,因為相機是固定的。varThreshold改為 40,因為該值越低,誤報的可能性就越大。在這種情況下,我們只對較大的對象感興趣。
在繼續處理矩形之前,我們對圖像進行了進一步的清理。為此,閾值函數就派上用場了。從我們的mask開始,我們告訴它我們只想顯示白色或黑色值,因此通過編寫254, 255,只會考慮 254 和 255 之間的值。
然後我們將找到的對象的坐標插入到 if 條件中並繪制矩形
這是最終結果:
我們現在只需導入和集成跟蹤功能。
一旦創建了對象,我們必須獲取邊界框的每個位置並將它們插入到單個數組中。
通過在屏幕上顯示結果,您可以看到所有通過 ROI 的通道是如何被識別的,以及它們的位置是如何插入到特定的數組中的。顯然,識別的摩托車越多,我們的數組就越大。
現在讓我們將帶有位置的數組傳遞給tracker.update()。我們將再次獲得一個包含位置的數組,但此外,將為每個對象分配一個唯一的 ID。
從代碼中可以看出,我們可以使用 for 循環分析所有內容。此時我們只需要繪制矩形並顯示車輛 ID。
在圖像中,您可以看到結果
main.py
從視頻中也可以看到,我們已經獲得了我們在本教程開始時設置的結果。
但是,您必須將其視為練習或起點,因為關於這個主題有很多話要說,而本教程的目的只是讓您了解對象跟蹤的原理。
如果你想將 Object Tracking 集成到你的項目中,你應該使用更可靠和先進的對象檢測方法,以及跟蹤方法。
完整代碼地址:私信「333」直接獲取或者「鏈接」
4. 怎樣使用Python圖像處理
Python圖像處理是一種簡單易學,功能強大的解釋型編程語言,它有簡潔明了的語法,高效率的高層數據結構,能夠簡單而有效地實現面向對象編程,下文進行對Python圖像處理進行說明。
當然,首先要感謝「戀花蝶」,是他的文章「用Python圖像處理 」 幫我堅定了用Python和PIL解決問題的想法,對於PIL的一些介紹和基本操作,可以看看這篇文章。我這里主要是介紹點我在使用過程中的經驗。
PIL可以對圖像的顏色進行轉換,並支持諸如24位彩色、8位灰度圖和二值圖等模式,簡單的轉換可以通過Image.convert(mode)函數完 成,其中mode表示輸出的顏色模式。例如''L''表示灰度,''1''表示二值圖模式等。
但是利用convert函數將灰度圖轉換為二值圖時,是採用固定的閾 值127來實現的,即灰度高於127的像素值為1,而灰度低於127的像素值為0。為了能夠通過自定義的閾值實現灰度圖到二值圖的轉換,就要用到 Image.point函數。
深度剖析Python語法功能
深度說明Python應用程序特點
對Python資料庫進行學習研究
Python開發人員對Python經驗之談
對Python動態類型語言解析
Image.point函數有多種形式,這里只討論Image.point(table, mode),利用該函數可以通過查表的方式實現像素顏色的模式轉換。其中table為顏色轉換過程中的映射表,每個顏色通道應當有256個元素,而 mode表示所輸出的顏色模式,同樣的,''L''表示灰度,''1''表示二值圖模式。
可見,轉換過程的關鍵在於設計映射表,如果只是需要一個簡單的箝位值,可以將table中高於或低於箝位值的元素分別設為1與0。當然,由於這里的table並沒有什麼特殊要求,所以可以通過對元素的特殊設定實現(0, 255)范圍內,任意需要的一對一映射關系。
示例代碼如下:
import Image # load a color image im = Image.open(''fun.jpg'') # convert to grey level image Lim = im.convert(''L'') Lim.save(''fun_Level.jpg'') # setup a converting table with constant threshold threshold = 80 table = [] for i in range(256): if i < threshold: table.append(0) else: table.append(1) # convert to binary image by the table bim = Lim.point(table, ''1'') bim.save(''fun_binary.jpg'')
IT部分通常要完成的任務相當繁重但支撐這些工作的資源卻很少,這已經成為公開的秘密。任何承諾提高編碼效率、降低軟體總成本的IT解決方案都應該進行 周到的考慮。Python圖像處理所具有的一個顯著優勢就是可以在企業的軟體創建和維護階段節約大量資金,而這兩個階段的軟體成本佔到了軟體整個生命周期中總成本 的50%到95%。
Python清晰可讀的語法使得軟體代碼具有異乎尋常的易讀性,甚至對那些不是最初接觸和開發原始項目的程序員都 能具有這樣的強烈感覺。雖然某些程序員反對在Python代碼中大量使用空格。
不過,幾乎人人都承認Python圖像處理的可讀性遠勝於C或者Java,後兩 者都採用了專門的字元標記代碼塊結構、循環、函數以及其他編程結構的開始和結束。提倡Python的人還宣稱,採用這些字元可能會產生顯著的編程風格差 異,使得那些負責維護代碼的人遭遇代碼可讀性方面的困難。轉載
5. python圖像處理代碼,望大神詳細解釋。越詳細越好
#初始化一個矩形np.max(marks)+1行,3列,默認值為0
colorTab=np.zeros((np.max(marks)+1,3))
#遍歷數組,給每行的3列賦值,就是RGB顏色值,8位的
foriinrange(len(colorTab)):
aa=np.random.uniform(0,255)
bb=np.random.uniform(0,255)
cc=np.random.uniform(0,255)
colorTab[i]=np.array([aa,bb,cc],np.uint8)
#初始化另一個跟img圖像形狀大小一樣的圖像,一副黑色圖像
bgrImage=np.zeros(img.shape,np.uint8)
#遍歷marks形狀的行列
foriinrange(marks.shape[0]):
forjinrange(marks.shape[1]):
index=marks[i][j]
#判斷是不是區域與區域之間的分界,如果是邊界(-1),則使用白色顯示
ifindex==-1:
bgrImage[i][j]=np.array([255,255,255])#像素點設置位白色
else:
bgrImage[i][j]=colorTab[index]#像素點設置位上邊隨機生成的顏色值
#顯示處理後的圖像圖像
cv2.imshow('AfterColorFill',bgrImage)
#總結,先生成一個跟marks相同數量的row*col的一張顏色表,然後創建一個跟marks相同大小的一副黑色圖像
#最後對黑色圖像畫出白色邊界和內部隨機彩色像素值
6. Python運維工程師是什麼Python運維工程師工作職責及要求!
很多人應該都聽說過Python工程師、Linux運維工程師,那麼你知道什麼是Python運維工程師嗎?它的工作職責以及崗位要求是什麼呢?我們一起來看看吧。
Python運維工程師是什麼?
運維工程師最基本的職責是負責服務的穩定性,確保服務可以二十四小時不間斷地為用戶提供服務,這個崗位負責維護並確保整個服務的高可用性,同時不斷優化系統架構、提升部署效率、優化資源利用率提高整體ROI。
Python運維工程師工作職責及要求!
工作職責:
1、負責公司自動化運維管理工具開發;
2、利用Python開發,使得伺服器物理數據或進程數據Web界面化;
3、根據需求編寫SaltStack腳本完成相關軟體部署、配置、管理;
4、提升運維工作自動化以及智能化程度;
5、日常運維相關腳本編寫。
崗位要求:
1、熟悉Linux系統,包含操作系統原理、常用系統命令、系統服務;
2、熟練掌握Python語言,熟練使用Python常用模塊和伺服器技術相關模塊;
3、至少熟悉一種Python Web框架,如Django、Tornado等;
4、至少一年以上Python項目開發經驗,能夠利用Python提取伺服器物理數據或告警信息,達到界面可視化。