Code Snippets

这里面记录了工作中常用的而且非常有用的代码, 主要目的是为了在工作中方便拷贝, 避免重新搜索.

Python

MXNet

获取某些层的内部信息

1
2
3
4
symbol, arg_params, aux_params = mx.model.load_checkpoint("./model/Inception-7", 1)
symbol= symbol.get_internals()['flatten_output'] # 获取内部的某层
# allow_extra_params 必须要
new_model = mx.model.FeedForward(symbol,ctx=mx.gpu(), arg_params=arg_params, aux_params=aux_params, allow_extra_params=True)

渲染可视化网络结构

1
mx.visualization.plot_network(symbol).render(filename, cleanup=True)

OpenCV

Display 的图像可以随意改变大小

1
2
cv2.namedWindow(windowname, cv2.WINDOW_FREERATIO) # cv2.WINDOW_FREERATIO 也可以是其它的值
cv2.imshow(windowname, mat)

cv2.imread(img, 0)cv2.cvtColor(mat, cv2.BGR2GRAY)效果是一样的
cv2.mean()返回的总是一个 4 元的数组, 所以, 在计算灰度图的时候, 要取第一个元素作为图像的均值.

彩色图像的直方图均衡化增强

在灰度图中由于是单通道, 而已直接对该通道做直方图均衡, 但是, 对于 RGB 图像, 由于是 3 个通道, 如果对 3 个通道分别做直方图均衡然后组合回去的话会影响了颜色效果, 因此, 对于彩色图像常用的做法是把图像转换到 YUV 空间, 然后, 在该颜色空间中只对 intensity value 直方图均衡, 也就是 YUV 空间的 Y 通道.

1
2
3
4
5
6
7
8
9
10
11
import cv2
import numpy as np
img = cv2.imread('input.jpg')
img_yuv = cv2.cvtColor(img, cv2.COLOR_BGR2YUV)
# equalize the histogram of the Y channel
img_yuv[:,:,0] = cv2.equalizeHist(img_yuv[:,:,0])
# convert the YUV image back to RGB format
img_output = cv2.cvtColor(img_yuv, cv2.COLOR_YUV2BGR)
cv2.imshow('Color input image', img)
cv2.imshow('Histogram equalized', img_output)
cv2.waitKey(0)

html5 插入视频

1
2
3
4
<video width="320" height="240" controls>
<source src="/content/videos/3.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
0%