日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

再战图形,一图一世界

發布時間:2023/12/10 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 再战图形,一图一世界 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

不得不感嘆,十年以后有了python,世界改變了許多。客觀的說是python中的庫,python語言本身并不十分驚艷,但禁不住那么多人來用它。你一言,我一語,聚沙成塔。高手不會說的門檻:
1.cv2.imread()讀取圖片后已多維數組的形式保存圖片信息,前兩維表示圖片的像素坐標,最后一維表示圖片的通道索引,具體圖像的通道數由圖片的格式來決定。所謂通道就是用來表示顏色空間的維數。RGB,就是三維。
2.使用np.set_printoptions(threshold=sys.maxsize),而不是網上人云亦云的np.set_printoptions(threshold=np.nan)
3.相對于RGB空間,HSV空間能夠非常直觀的表達色彩的明暗,色調,以及鮮艷程度,方便進行顏色之間的對比,也方便感情的傳達。但是缺點是不能直接把顏色值傳達給顯示器,在轉換過程中消耗系統資源。
4.彩色電視采用YUV空間正是為了用亮度信號Y解決彩色電視機與黑白電視機的兼容問題,使黑白電視機也能接收彩色電視信號。HSV是一種將RGB色彩空間中的點在倒圓錐體中的表示方法。HSV即色相(Hue)、飽和度(Saturation)、明度(Value),又稱HSB(B即Brightness)。HSV是一種比較直觀的顏色模型,所以在許多圖像編輯工具中應用比較廣泛。
5.統計顏色種類及出現的次數(多種神操作):

img = cv2.imread('j:/a.jpg') img1d=np.reshape(img,(300*534,3)) imgtuple=tuple(tuple(row) for row in img1d)#神 c=collections.Counter(imgtuple) dictc=dict(c) #終于找到正確的方法了 data_df = pd.DataFrame(list(dictc.items()))#神 print(data_df)

6.下載模塊Pillow,但是代碼寫from PIL import Image

7.干點有趣的。把圖中的顏色點轉換成常用顏色的名稱

dist=[np.argmin([np.sqrt(np.sum(np.asarray((pd.Series(y)).astype(int)-(pd.Series(x)).astype(int))**2)) for x in cc['rgb'] ]) for y in data_df['rgb']] print("dist",dist)

8.最簡單的。QtWidgets.QMainWindow

#self.show()顯示不了,一閃而過。一定要實例化后,調用show() #坑一 app = QtWidgets.QApplication(sys.argv) se=showWindow() #坑二:self.show()顯示不了,一閃而過。一定要實例化后,調用show() se.show() sys.exit(app.exec_())

9.QTableWidgetItem讓人的喜歡,但也有坑。

self.tb.setItem(3,0,QTableWidgetItem("Jan")) self.tb.item(3,0).setBackground(QtGui.QColor(0,51,102)) #這樣不行。坑#self.tb.setItem(3,0,(QTableWidgetItem("Jan")).setBackground(QColor(0,60,10)))

10.pandas一列是list,存入文件后,再讀回來就是object類型的。用了map、直接list()、to_numeric都不靠譜。最后用eval()解決。
最可氣的是 pandas.to_numeric函數方法,竟然不是面向對象的。是模塊級的方法,工具性質的。

txt文件:
像素 頻次 pixel rgb colorname coloren colorrgb
108 (53, 7, 0) 5358 53_7_0 [0, 7, 53] 純黑 Black [‘0’, ‘0’, ‘0’]

df['colorrgb']=[eval(x) for x in df['colorrgb'] ] df['colorrgbtype']=[type(x) for x in df['colorrgb'] ]

輸出:
Unnamed: 0 像素 頻次 pixel rgb colorname coloren colorrgb colorrgbtype
0 108 (53, 7, 0) 5358 53_7_0 [0, 7, 53] 純黑 Black [0, 0, 0] <class ‘list’>

11.python的list不以對位相減。只有我大pandas的Series可以。
Series有硬傷,不能直接保存。to_csv()不鳥它。
Series有一個to_frame()方法克這個短板。
把index,打包帶走的方法。

dict_month = {'month':month.index,'numbers':month.values} df_month = pd.DataFrame(dict_month)

12.花了兩天時間勉強實現了兩層餅圖。這個學習成本有點高。
def sunburstchart_by_go():# finance.py


excel有暴力實現的方法。對于用一次、兩次完全OK.
http://www.officedoyen.com/a/exceltubiao/yibantubiao/bingtu/2014/0830/2319.html

功到自然成。精進,用rotation、leaf屬性。還沒找到調整圖像大小的函數。有用openGL,自己弄一個的沖動。剛解剖了一個炮仗,不知能不能做馬斯克的大火箭。


13.毛玻璃效果
有位知呼朋友一語驚醒夢中人。窗口半透明與openGL有毛關系,與窗口系統有有關系。而應用程序的窗口似乎也不用openGL。
CSS技巧收集——毛玻璃效果
https://www.cnblogs.com/ghost-xyx/p/5677168.html

在安卓系統中,使用RenderScript實現高斯模糊(毛玻璃/磨砂)效果。3
https://www.jianshu.com/p/4d0176fd9730
“最開始想要實現毛玻璃效果時,我是一臉懵逼的,不知道如何下手。幸虧,有萬能的Google。搜索之后發現常見的實現方法有4種,分別是:”

14.使用QWebEngineView控件時,為其指定了一個無邊框、背景透明的父窗口,然后需要重繪QWebEngineView控件時,界面卡死,同時輸出窗口打印出“UpdateLayeredWindowIndirect failed for ptDst=xxx”的錯誤。

15.Direct X
Direct X其實是微軟公司推出的一個為Windows平臺的多媒體API函數庫,它提供標準接口來與顯卡和聲卡、輸入設備等進行交互。如果沒有這組標準API函數庫,那你就需要為每一種顯卡、聲卡的每個組合和每種類型的鍵盤、鼠標和游戲桿編寫不同的代碼。這不又回到了以前的Dos時代。為了解決這個問題,微軟公司推出了DirectX。DirectX從具體的硬件中抽象出來,并且將一組通用指令轉換成硬件的具體命令。這樣開發語言通過調用統一標準的Direct X函數庫就可以操作每一種顯卡、聲卡的每個組合和每種類型的鍵盤、鼠標和游戲桿等多媒體了。

16.關于CLR是什么做個小結
關于CLR是什么做個小結
1、.NET代碼都包含與自己相關的信息叫做metadata。
2、 CLR提供CTS(CLS也有功勞),所以可以在不同編程語言之間共享原代碼。
3、 用metadata管理代碼信息(不是利用注冊表),所以代碼易于安裝。
4、 使用統一的數據類型和類庫,所以編程語言的選擇變得不重要了,而且易于團隊開發。

17.幾個開源的視頻編解碼器介紹
一、ffmpeg
二、Xvid
三、X264
四、ffdshow
五、CoreAVC
vfw(Video For Windows)

DirectShow
vfw和dshow里的CODEC分別是通過fourcc碼和guid機制尋找的,可以在系統注冊codec后調用,比自帶編解碼庫形式更加統一,便于使用。此外,vfw和dshow是代表了兩個微軟不同時期的音視頻處理封裝庫,里面包含了音視頻驅動,音視頻處理的一整套方案。
DirectShow是微軟公司在ActiveMovie和Video for Windows的基礎上推出的新一代基于COM的流媒體處理的開發包,與DirectX開發包一起發布。

18.DirectShow 播放mp4編碼 視頻

1、初始化 com, 調用CoInitialize(NULL)

2、初始化GraphBuilder, 調用CoCreateInstance。 GraphBuilder是DirectShow中視頻的管理類。 非常重要。

3、枚舉需要的接口,調用QueryInterface, 常用的有IID_IMediaControl、IID_IVideoWindow等。

4、創建自己需要的Filter(若是播放AVI,則可以略過這一步), 這一步需要分別創建:

分離器: 從磁盤中讀取文件,并將視頻文件內容分為音頻流和視頻流。視頻解碼器: 將視頻流解碼為一幀一幀的畫面,之后傳給視頻渲染器。音頻解碼器: 將音頻流解碼為音頻設備可播放的形式,之后傳給音頻播放設備。視頻渲染器: 負責渲染視頻畫面。音頻渲染器:負責播放聲音。然后,需要將各filter的pin鏈接起來。形成一個通暢的視頻流。之后,輸入文件后,DirectShow就會按照事先設定好的線路運轉。

5、枚舉IID_IFileSourceFilter接口,讀取文件。 之后使用MediaControl對視頻的播放進行控制。

這個過程需要,預先安裝好對應的解碼器和分離器。 渲染器系統提供了。 lav filter包含同時分離器和解碼器。

我用的是,lav的分離器 lav splitter filter 和 ffdshow的解碼器。

同時,如果希望直觀的了解這個通路的建立過程,可以使用graphstudionext。

不過,如果希望看到程序的播放通路。需要將graphBuilder加入到ROT(對象活動表)中,具體過程參照MSDN。

19.請問使用DirectShow如何才能播放MP4視頻?

http://sourceforge.net/projects/gplmpgdec/
http://www.pudn.com/downloads66/sourcecode/multimedia/streaming/detail237093.html

LoadFromFile()
然后調用CoCreateInstance方法來創建IAMMultiMediaStream的實例
然后初始化IAMMultiMediaStream,建立視頻音頻流。
調用OpenFile()方法從文件中提取流

這樣就完成了流的提取工作。

下面開始播放。

建個方法封裝代碼。

HRESULT Play(IDirectDrawSurface *pSurface, IMultiMediaStream *pMMStream)

{

IMediaStream *pPrimaryVidStream;

IDirectDrawMediaStream *pDDStream;

IDirectDrawStreamSample *pSample;

RECT rect;

DDSURFACEDESC ddsd;

pMMStream->GetMediaStream(MSPID_PrimaryVideo, &pPrimaryVidStream);

pPrimaryVidStream->QueryInterface(IID_IDirectDrawMediaStream, (void **)&pDDStream);
   ddsd.dwSize = sizeof(ddsd);
   pDDStream->GetFormat(&ddsd, NULL, NULL, NULL);
   rect.top =100;
   rect.left =150;
   rect.bottom = ddsd.dwHeight+100;
   rect.right = ddsd.dwWidth+150;
   pDDStream->CreateSample(pSurface, rect, 0, &pSample);
   pMMStream->SetState(STREAMSTATE_RUN);
   while (pSample->Update(0, NULL, NULL, NULL) == S_OK);
   pMMStream->SetState(STREAMSTATE_STOP);
   pSample->Release();  
   pDDStream->Release();
   pPrimaryVidStream->Release();
  }

總結

以上是生活随笔為你收集整理的再战图形,一图一世界的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。