使用nohup后台运行python,print没有输出到日志 nohup python foobar.py > foobar.log 2>&1 & 发现foobar.log中显示不出来python程序中print的东西。 这是因为python的输出有缓冲,导致foobar.log并不能够马上看到输出。 python 有个-u参数,使得python不启用缓冲。 nohup python -u foobar.py > foobar.log 2>&1 & 其他玩法: 只输出错误到日志 # Only error write to log nohup python -u ./foobar.py> /dev/null 2>foobar.log & 不输出到日志 # Nothing to Display nohup python -u ./foobar.py> /dev/null 2>&1 & 全部print输出到日志 # Write all to log nohup python …
Monthly Archives: July 2019
[Python]PostgreSQL字典/JSON类型递归自展开
PostgreSql 习惯上会将特殊数据类型的各个节点按字典/JSON类型存储 程序中需要获得完整的数据信息的时候,需要对这个节点进行自展开。 以下使用global id方式进行展开,一般适用于SQL+NoSQL结合的系统使用 import sys, os import numpy as np def get_object_by_gid(id): for dict in data[“json”]: if dict[“gid”] == id: return dict.copy() def self_exact_node(key): dict = get_object_by_gid(key) for k,v in dict.items(): if k == “sub_item” : item_arr = [] for id in v[“gids”]: item_arr.append(self_exact_node(id)) v[“item_arr”] = item_arr.copy() return dict def demo(): data_exact = …
[Python]使用OpenCV实现伪彩色和热力图
使用applyColorMap可以对单个通道的图像进行伪彩色处理和热力图 OpenCV的定义了12种colormap常数,选择一个需要的即可 cv2.applyColorMap(heatmap_g, cv2.COLORMAP_JET) 图像可以使用addWeighted进行叠加处理 cv2.addWeighted(heatmap_img, alpha, merge_img, 1-alpha, 0, merge_img) # 将热度图覆盖到原图 def heatmap_overlay(image,heatmap): # 灰度化heatmap heatmap_g = heatmap.astype(np.uint8) # 热力图伪彩色 heatmap_color = cv2.applyColorMap(heatmap_g, cv2.COLORMAP_JET) # overlay热力图 merge_img = image.copy() heatmap_img = heatmap_color.copy() overlay = image.copy() alpha = 0.25 # 设置覆盖图片的透明度 #cv2.rectangle(overlay, (0, 0), (merge_img.shape[1], merge_img.shape[0]), (0, 0, 0), -1) # 设置蓝色为热度图基本色 cv2.addWeighted(overlay, alpha, …
[Python]使用OpenCV实现图像和视频转换操作
将视频按FPS拆解成单张图片 使用cv2.VideoCapture cv2.VideoCapture(video_path) 计算FPS使用,注意部分压缩视频FPS存在丢帧情况,需要进行跳帧处理 fps = int(vidcap.get(cv2.CAP_PROP_FPS)) def video_split(): video_path = ‘test/video/video_01.mp4’ video_name = video_path[:-4] vidcap = cv2.VideoCapture(video_path) success,image = vidcap.read() fps = int(vidcap.get(cv2.CAP_PROP_FPS)) count = 0 while success: image = image_process(image) cv2.imwrite(“%s/%d.jpg” % (video_name, count), image) #if count % fps == 0: # cv2.imwrite(“%s/%d.jpg” % (video_name, int(count / fps)), image) print(‘Process %dth seconds: ‘ …
[Python]使用OpenCV进行轮廓检索
对遮罩层进行轮廓检索并合并到图像上 第一步使用高斯模糊GaussianBlur模糊边缘像素 第二步使用Canny侦测边界,丢弃部分散点 最后使用findContours找到外框 #对遮罩层进行轮廓检索并合并到图像上 def drawMaskContoursOverImage(image,mask): # convert colorspace gray = cv2.cvtColor(mask, cv2.COLOR_BGR2GRAY) #image = cv2.cvtColor(image, cv2.COLOR_GRAY2BGR) # 3*3 GaussianBlur # gray = cv2.GaussianBlur(gray, (3, 3), 0) # canny detect edge gray = cv2.Canny(gray, 100, 300) ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) # binary是最后返回的二值图像 #findContours()第一个参数是源图像、第二个参数是轮廓检索模式,第三个参数是轮廓逼近方法 #输出是轮廓和层次结构,轮廓是图像中所有轮廓的python列表,每个单独的轮廓是对象边界点的(x,y)坐标的Numpy数组 binary, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) …