不得不感叹,十年以后有了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();
  }

再战图形,一图一世界相关推荐

  1. 【历史上的今天】5 月 3 日:戴尔公司成立;“深蓝”再战象棋冠军;计算机先驱诞生日

    整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2022 年 5 月 3 日,在 1989 年的今天,美国匹兹堡市卡内基-梅伦大学的威廉·惠特克研制出一种无人驾驶 ...

  2. 升级总代分享思路_旧笔记本光驱换SSD,升级内存,改造散热还能再战5年

    哈喽,大家好,我是Fanfan,今天给大家分享一下怎么升级家里的旧笔记本电脑,让旧笔记本在2020焕发第二春.这就是本次的主角DELL N4050. 背景 家里有三个笔记本电脑.xps,MacBook ...

  3. 挥别2022再战2023 | 平行云“逆势增长”与“顺势而为”

    脚踏实地,2022充满艰辛但也充满干劲儿,平行云厚积薄发,逆势增长,全力革新技术高度,不断探索业务边界-- 仰望星空,2022元宇宙及XR产业爆发,作为Cloud XR技术布道者与产业推动者,平行云顺 ...

  4. cad批量选择相同块_在CAD中如何快速选择相同或类似的图形、图块

    在CAD中如何快速选择相同或类似的图形.图块 在绘图过程有时需要选择相同或类似的对象进行相同的操作,或通过选择所有同名的图块来统计图块数量或一次性删除此图块.CAD提供了多种选择相同或类似图形和图块的 ...

  5. 腾讯一面直接扑街,等我回头继续再战

    开始 投了简历之后也是很奇怪,莫名其妙就直接面试了,没有笔试的过程. 最奇怪的是明明投递的是pc客户端经验都是c++还投安卓端. 面试官看到简历里写到多线程就问了一堆多线程的知识, 要是对某个东西不熟 ...

  6. 清华学霸讲计算机,清华学霸退学再战高考,疯狂举动只因痴迷这个专业

    原标题:清华学霸退学再战高考,疯狂举动只因痴迷这个专业 2018年,来自湖北襄阳的王宇航以697分的高分考入清华大学. 本以为自己就读的自动化专业偏软件方面,但是通过一年的学习,王宇航发现所在专业与自 ...

  7. CAD制图初学入门常见问题:CAD软件中如何选择相同或类似的图形和图块?

    本篇CAD制图初学入门教程主要介绍的是关于浩辰CAD软件中如何选择相同或者类似的图形和图块.在使用浩辰CAD软件制图过程有时需要选择相同或类似的对象进行相同的操作,或通过选择所有同名的图块来统计图块数 ...

  8. 荣耀9x支持升级鸿蒙吗,华为为老机型续命,荣耀9X被爆升级鸿蒙2.0,4GB内存还能再战?...

    因为华为的旗舰机发布不断推迟,再加上芯片受限,库存不足的影响.华为今年的出货量将会有一个较大的衰减,所以在新机的热度大减之后,华为今年要做的就是最大限度的保证存量市场的流失速度.而保证存量市场最好的办 ...

  9. 百度数字人度晓晓再战上海高考作文:生成超百种语言,高分水平却被判零分

    本文已在飞桨公众号发布,查看请戳链接: 百度数字人度晓晓再战上海高考作文:生成超百种语言,高分水平却被判零分 还记得上个月在高考语文作文挑战中,以48分超过75%考生的百度AI数字人度晓晓吗?7月8日 ...

  10. 双非研究生选择延毕一年再战秋招,收割多家大厂SP岗

    点击上方 "大数据肌肉猿"关注, 星标一起成长 点击下方链接,进入高质量学习交流群 今日更新| 1052个转型案例分享-大数据交流群 分享一位学习群同学的秋招经历,他原本是2021 ...

最新文章

  1. @Override is not allowed when implementing interface method
  2. 怎么用python画简单的图-使用Python中的Turtle库绘制简单的图形
  3. citrix创建虚拟机服务器,在 ESXi 服务器上安装并配置 Citrix SD-WAN Center
  4. 阿里云ECS服务器多种实例规格如何选择
  5. 阿里云混合云管理平台发布帮您管好云
  6. Java占位符替换工具类
  7. zz:NETCONF协议详解
  8. Chrome保存mht网页文件的方法 – 无需任何插件,完美!
  9. leetcode-40-组合总和 II
  10. 制作自己的W7系统的主题包自己制作
  11. maxdea如何计算指数_MaxDEA
  12. 根据经纬度计算两点之间的距离
  13. RecyclerView吸顶效果
  14. Qt qml 下使QtCharts
  15. VS--安装VS2010出现VC9.0 Runtime问题的解决方法
  16. 致敬全球第一CEO杰克·韦尔奇,重温其卸任演讲
  17. 有关一个公用的BPL的问题
  18. Go语言编程入门超级指南
  19. widerface人脸数据集,yolo训练集格式,voc训练集格式
  20. 记录一次拯救jenkins的历程

热门文章

  1. 落地SOA成为中国电信战略转型第一步
  2. matlab 多维svm分类代码,SVM多分类(matlab)
  3. Ubuntu环境下Android反编译apk教程
  4. mysql alter 添加注释_我们如何使用MySQL ALTER TABLE命令在列上添加注释?
  5. mysql alter table 速度慢_mysql问题: alter导致速度慢 | 学步园
  6. chrome插件商店(Chrome插件商店)
  7. 打印机服务器启用后自动关闭,Win7打印机服务自动关闭了怎么打开|Win7打开打印机服务的简单方法...
  8. java冷门小功能代码收集
  9. 【京东助手】滑稽东试用助手 V1.6.0
  10. FFmpeg解码H264视频裸流(直接可用)