A. 如何用Python+Pygame旋轉圖像、灰度圖像
『』『
2013-7-4
by JavenLee
希望能帶給你啟發
'''
import Image
img = Image.open(『origin.png』) # 得到一個圖像的實例對象 img
rot_img = img.rotate(270) #順時針旋轉90度
rot_img.save("rot_img.jpg")
x_img=img.transpose(Image.FLIP_LEFT_RIGHT) #垂直翻轉
y_img=img.transpose(Image.FLIP_TOP_BOTTOM) #水平翻轉
new_imag=img.convert('L')
'''
模式
img.convert() 參數說明如下:
1 1位像素,黑和白,存成8位的像素
L 8位像素,黑白
P 8位像素,使用調色板映射到任何其他模式
RGB 3×8位像素,真彩
RGBA 4×8位像素,真彩+透明通道
CMYK 4×8位像素,顏色隔離
YCbCr 3×8位像素,彩色視頻格式
I 32位整型像素
F 32位浮點型像素
'''
B. python 圖像旋轉怎麼去除黑邊
去除黑邊現象的辦法:
1)在做圖像坐標映射反查的時候,算出當前點在原始圖像的外部還是內部,若在外部,判斷當前像素點的X或者Y位置,找臨近四個邊界的像
素值代替;
該方法太過繁瑣,適合自己寫程序實現,如若想調用現有的一些庫函數,可以考慮2)做法:
2)將待旋轉的圖像進行邊界填充,最不濟的情況下可以擴充為原始圖像的大小;
旋轉邊界填充圖像;
計算原始圖像經過旋轉以後的結果圖像的尺寸大小;
在邊界填充旋轉圖像上截取目標圖像;(圖像都是按照圖像中心旋轉的);
附上一段matlab人臉根據人眼位置對齊的代碼:
[plain] view plain
eye_angle = atan2( (eye_pts(2,2) - eye_pts(1,2)),(eye_pts(2,1) - eye_pts(1,1) ) ) * 180 / pi; % 人眼的傾斜角度
if eye_angle < 0
eye_angle = eye_angle + 360;
end
if floor(eye_angle) <= 5 || floor( 360 - eye_angle ) <= 5
continue;
end % 5度之內不做對齊操作
img = imread(img_path);
[m,n,~] = size(img);
img_pad = padarray(img,[m n],'both','replicate');% 擴充圖像
img_pad_rotate = imrotate(img_pad,eye_angle,'bilinear'); % 旋轉擴充圖像
[m_pad_r,n_pad_r,~] = size(img_pad_rotate);
[plain] view plain
eye_angle = eye_angle * pi / 180;
f_cos = cos(eye_angle);f_sin = sin(eye_angle);
new_m = floor(m * abs(f_cos) + n * abs(f_sin));
new_n = floor(n * abs(f_sin) + m * abs(f_cos));% 最終對齊圖像的大小
left = floor((n_pad_r - new_n) / 2);right = left + new_n;
bott = floor((m_pad_r - new_m) / 2);up = bott + new_m;
face_rorate = img_pad_rotate(bott : up,left : right,:); % 截取目標圖像
figure,imshow(face_rorate)
C. python里如何將視頻旋轉
好象調用一次主窗口的close似乎就可以。或者是app的close, 或者是destroy或者是terminate,不記得是哪個函數了。 當然你殺掉自己也是可以的。 用kill。 或者是sys.exit也應該可以。
D. python能用滑鼠旋轉散點圖嗎
首先,你需要用到python的圖形用戶界面的模塊 其次,你需要用到裡面繪制界面和添加滑鼠響應的功能模塊
E. python做三維圖結果怎麼用滑鼠拖動旋轉
旋轉視角,要根據三角函數計算的,每轉動一個角度都需要重新計算,這些都需要實現,之後根據轉動的數值傳入進去,計算後,重新畫圖
F. J在windowes上對圖片進行右鍵旋轉後,在Python語言中對img 使用size()方法,獲取的寬高仍為旋轉之前的!
只有相應顯示文字信息沒變,但圖片視覺效果和windows旋轉的一樣嗎
G. Python如何圖像識別
首先,先定位好問題是屬於圖像識別任務中的哪一類,最好上傳一張植物葉子的圖片。因為目前基於深度學習的卷積神經網路(CNN)確實在圖像識別任務中取得很好的效果,深度學習屬於機器學習,其研究的範式,或者說處理圖像的步驟大體上是一致的。
1、第一步,准備好數據集,這里是指,需要知道輸入、輸出(視任務而定,針對你這個問題,建議使用有監督模型)是什麼。你可以准備一個文件夾,裡面存放好植物葉子的圖像,而每張圖像對應一個標簽(有病/沒病,或者是多類別標簽,可能具體到哪一種病)。
具體實現中,會將數據集分為三個:訓練集(計算模型參數)、驗證集(調參,這個經常可以不需要實現劃分,在python中可以用scikit-learn中的函數解決。測試集用於驗證模型的效果,與前面兩個的區別是,模型使用訓練集和驗證集時,是同時使用了輸入數據和標簽,而在測試階段,模型是用輸入+模型參數,得到的預測與真實標簽進行對比,進而評估效果。
2、確定圖像識別的任務是什麼?
圖像識別的任務可以分為四個:圖像分類、目標檢測、語義分割、實例分割,有時候是幾個任務的結合。
圖像分類是指以圖像為輸入,輸出對該圖像內容分類的描述,可以是多分類問題,比如貓狗識別。通過足夠的訓練數據(貓和狗的照片-標簽,當然現在也有一系列的方法可以做小樣本訓練,這是細節了,這里並不敞開講),讓計算機/模型輸出這張圖片是貓或者狗,及其概率。當然,如果你的訓練數據還有其它動物,也是可以的,那就是圖像多分類問題。
目標檢測指將圖像或者視頻中的目標與不感興趣的部分區分開,判斷是否存在目標,並確定目標的具體位置。比如,想要確定這只狗所佩戴的眼睛的位置,輸入一張圖片,輸出眼睛的位置(可視化後可以講目標區域框出來)。
看到這里,應該想想植物葉子診斷疾病的問題,只需要輸入一整張植物葉子的圖片,輸出是哪種疾病,還是需要先提取葉子上某些感興趣區域(可能是病變區域),在用病變區域的特徵,對應到具體的疾病?
語義分割是當今計算機視覺領域的關鍵問題之一,宏觀上看,語義分割是一項高層次的任務。其目的是以一些原始圖像作為輸入,輸出具有突出顯示的感興趣的掩膜,其實質上是實現了像素級分類。對於輸入圖片,輸出其舌頭區域(注意可以是不規則的,甚至不連續的)。
而實例分割,可以說是在語義分割的基礎上,在像素層面給出屬於每個實例的像素。
看到這里,可以具體思考下自己的問題是對應其中的哪一類問題,或者是需要幾種任務的結合。
3、實際操作
可以先通過一個簡單的例子入手,先了解構建這一個框架需要准備什麼。手寫數字識別可以說是深度學習的入門數據集,其任務也經常作為該領域入門的案例,也可以自己在網上尋找。
H. python 如何控制圖片移動
matplotlib是繪制二維圖形的Python模塊,它用Python語言實現了MATLAB畫圖函數的易用性,同時又有非常強大的可定製性
I. 怎麼樣在python中讓最後畫出來的圖翻轉90度
importImage
importos
importglob
dir="f:mobile"
#取出指定文件
file=glob.glob(os.path.join(dir,'xxx.JPG'))
#打開圖片
img=Image.open(file)
#顯示圖片
img.show()
printimg.format,img.size,img.mode
print"rotatingimage....."
im=img.rotate(90)
im.save(image)
我不知道你怎麼畫的,但旋轉請參考以上代碼
J. python 圖片移動
#-*-coding:gbk-*-
importImage
importImageDraw
importImageChops
im=Image.new('RGB',(800,600),'white')
im2=Image.open('test.png')
#測試圖放畫布左邊,畫布右邊底色塗黃
left=(im.size[0]/2-im2.size[0])/2
upper=(im.size[1]-im2.size[1])/2
im.paste(im2,(left,upper))
im.paste('yellow',(im.size[0]/2,0)+im.size)
im.show()
#因要旋轉得計算測試圖對角線,然後切出
d=int((im2.size[0]**2+im2.size[1]**2)**0.5)
left=(im.size[0]/2-d)/2
upper=(im.size[1]-d)/2
bbox=(left,upper,left+d,upper+d)
cp=im.crop(bbox)
#圖底不是黑先做mask再作旋轉,
#mask做法不一,按測試圖可選取g或b通道
r,g,b=cp.split()
mask=g.point(lambdai:i<250and255)
angle=30
mask=mask.rotate(angle)
cp=cp.rotate(angle)
#利用mask貼在畫布右邊黃底區內
im.paste(cp,(left+im.size[0]/2,upper),mask)
im.show()