备忘~

#python

  • numpy转换数据类型 image.astype(np.uint8)
  • [::-1]表示倒序
  • 显示彩色图像的前两维(即灰度图像):image[:,:,0]
  • 指定工作目录
import os
import sys
os.chdir(r'F:\demo\car')
  • 获取当前目录: os.getcwd()
  • 图片的类型转换:
    从cv2.imread()读取的图片是uint8格式,[0-255]范围之间,进行类似 255. * 2 - 1的操作,就是从uint8—>float64,变成float之后就可以做运算,float64取值范围是[-1,1],float32的取值范围是[0,1],uint8的取值范围是[0,255]
image = cv2.imread("F:\\demo\\1.jpg") 
print(image.dtype) #uint8

image2 = image / 255. * 2  - 1
print(image2.dtype) #float64
  • tensor和array的相互转换
 tensor转array:tensor.eval() #(必须在会话中)
 array转tensor:tf.convert_to_tensor(array)
  • 矩阵拼接: 先扩充维度tf.expand_dims(a,axis=0)
    再使用tf.concat([a,a],axis=0) 拼接两个a到第0维。

  • 写入文件使用:

with open("output.txt","w+") as f:
	f.write(parms) 
	#写入的要求是str格式,如果是array,则使用f.write(str(parms))转成str即可。

opencv的使用(python)

###1. 读取图片

image=cv2.imread('F:\\demo\\123.jpg')
print(image.shape) #(300, 533, 3)读进来的尺寸是(高度,长度,通道)
print(np.asarray(image.shape[:2][::-1])) #[533 300] 
#解析:[:2]表示只取前两维,[::-1]表示逆序,相当于得到了长度,高度。

opencv的cv2.imread()读取的是BGR格式图像,需要转换成RGB,这里列出两种转换成RGB的方法~

img=cv2.imread('F:\\demo\\123.jpg')
plt.imshow(img)
plt.show()   
#【方法1】
b,g,r = cv2.split(img)
img2 = cv2.merge([r,g,b])
plt.imshow(img2)
plt.show()
#【方法2】
image = img[:, :, ::-1]

###2. 读取视频

import cv2
videoCapture = cv2.VideoCapture('demo.avi')
fps = videoCapture.get(cv2.CAP_PROP_FPS) #获取帧率
size = (int(videoCapture.get(cv2.CAP_PROP_FRAME_WIDTH)),  #获取视频尺寸
        int(videoCapture.get(cv2.CAP_PROP_FRAME_HEIGHT)))
while(1):
    ret, frame = videoCapture.read() #读帧
    cv2.imshow("capture", frame)  #显示视频
    if cv2.waitKey(100) & 0xFF == ord('q'): #按q键退出
        break
videoCapture.release()  
cv2.destroyAllWindows() #释放窗口

###3. 读取视频帧,并转换成视频流

im_dir = 'F:\\demo\\car' #图片路径
video_dir = 'F:\\demo\\out.avi' #输出视频路径
fps = 30  #帧率
num = 284 #图片数 
img_size = (1104,622) #图片尺寸

fourcc = cv2.VideoWriter_fourcc('M','J','P','G') #opencv3.0
videoWriter = cv2.VideoWriter(video_dir, fourcc, fps, img_size)

for i in range(1,num):
    im_name = os.path.join(im_dir, str(i).zfill(8)+'.jpg')
    frame = cv2.imread(im_name)
    videoWriter.write(frame)
    #print(im_name)

videoWriter.release()
print('finish')
#【注意】:图片命名格式为“00000001.jpg”,“00000002.jpg”等

猜你喜欢

转载自blog.csdn.net/aaon22357/article/details/82048434