天天看点

pyhton目标检测---图像基本操作

数据读取–图像

  • cv2.IMREAD_COLOR : 彩色图像
  • cv2.IMREAD_GRAYSCALE : 灰度图像

读取图像:img = cv2.imread(‘xxx.jpg’)

显示图像:cv2.imshow(‘image’,img)

显示等待时间:cv2.waitKey(1000) //毫秒级,0表示任意键终止

结束显示窗口:cv2.destroAllWindows()

获取图像的属性:img.shape // 获得RGB类型(h,w,c)数值大小

读取图像时指定第二参数:img = cv2.imread(‘xxx.jpg’,cv2.IMREAD_GRAYSCALE) //灰度图像

图像保存:cv2.imwrite(‘xxx.jng’,img)

图像大小(像素点大小):img.size

图像数据类型:img.dtype

数据读取-视频

  • cv2.VideoCapture可以捕获摄像头,用数字来控制不同的设备,例如:0,1。
  • 如果是视频文件,直接指定好路径即可。

读取视频:vc = cv2.VideoCapture(‘test.mp4’)

读取视频每一帧的图像:循环读取 vc.read()

将每一帧转换成灰度图:cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)

截取部分图像数据:

img = cv2.imread(‘cat.jpg’)

cat = img[0:200,0:200] //截取指定位置

cv2_show(‘cat’,cat)

颜色通道提取:

b,g,r = cv2.split(img)

组合颜色:

img = cv2.merge((b,g,r))

边界填充:

cv2.copyMakeBorder(img,top_size,bottom_size,right_size,borderType=cv2.BORDER_REPLICATE)

复制法:

BORDER_REPLICATE:复制法,也就是复制最边缘像素。

BORDER_REFLECT:反射法,对感兴趣的图像中的像素在两边进行复制。例如:fedcba|abcdefgh|hgfedcb

BORDER-REFLECT_101:反射法,也就是以最边缘像素为轴,对称,例如:gfedcb|abcdefgh|gfedcba

BORDER_WRAP:外包装法,例如:cdefgh|abcdefgh|abcdefg

BORDER-CONSTANT:常量法,常数值填充。

数值计算:

img_cat2 = img_cat = 10 //所有位置进行+10

(ing_cat + img_cat2) //相当于%256

cv2.add(img_cat,img_cat2)//计算的所得数值>255时,取255输出。

图像融合:

  • 首先:将两个图像的shape值改为一样:

    img_dog = cv2.resize(img_dog,(500,414))//直接修改shape大小

    res = cv2.resize(img,(0,0),fx = 3,fy = 2)//可以不设置shape的大小,直接修改长宽比例

  • 其次:

    res = cv2.addWeighted(img_cay,0.4,img_dog,0.6,0)//一共五个变量:x1,a1,x2,a2,b 。R= a1x1+a2x2+b

继续阅读