• 售前

  • 售后

热门帖子
入门百科

Python opencv操作深入详解

[复制链接]
123456790 显示全部楼层 发表于 2021-10-26 13:24:40 |阅读模式 打印 上一主题 下一主题
直接读取图片
  1. def display_img(file="p.jpeg"):
  2.   img = cv.imread(file)
  3.   print (img.shape)
  4.   cv.imshow('image',img)
  5.   cv.waitKey(0)
  6.   cv.destroyAllWindows()
复制代码
读取灰度图片
  1. def display_gray_img(file="p.jpeg"):
  2.   img = cv.imread(file,cv.IMREAD_GRAYSCALE)
  3.   print (img.shape)
  4.   cv.imshow('image',img)
  5.   cv.waitKey(0)
  6.   cv.destroyAllWindows()
  7.   cv.imwrite("gray_img.png",img)
复制代码
读取视频
  1. def display_video(file="sj.mp4"):
  2.   v = cv.VideoCapture(file)
  3.   if v.isOpened():
  4.     open,frame = v.read()
  5.   else:
  6.     open=False
  7.   while open:
  8.     ret,frame = v.read()
  9.     if frame is None:
  10.       break
  11.   
  12.     if ret == True:
  13.       gray = cv.cvtColor(frame,cv.COLOR_BGR2GRAY)
  14.       cv.imshow("result",gray)
  15.       if cv.waitKey(10) & 0xFF == 27:
  16.         break
  17.   v.release()
  18.   v.waitKey(0)
  19.   v.destroyAllWindows()
复制代码
截取图片
  1. def get_frame_img(file="p.jpeg"):
  2.   img = cv.imread(file)
  3.   print (img.shape)
  4.   cat = img[0:200,0:200]
  5.   cv.imshow('get_frame_img',cat)
  6.   cv.waitKey(0)
  7.   cv.destroyAllWindows()
复制代码
提取rgb通道
  1. def extrats_rgb_img(file="p.jpeg"):
  2.   img = cv.imread(file)
  3.   b,g,r = cv.split(img)
  4.   print (b.shape,g.shape,r.shape)
  5.   new_img = cv.merge((b,g,r))
  6.   print (new_img.shape)
  7.   copy_img_r = img.copy()
  8.   copy_img_r[:,:,0]=0
  9.   copy_img_r[:,:,1]=0
  10.   cv.imshow("r_img",copy_img_r)
  11.   copy_img_g = img.copy()
  12.   copy_img_g[:,:,0]=0
  13.   copy_img_g[:,:,2]=0
  14.   cv.imshow("g_img",copy_img_g)
  15.   copy_img_b = img.copy()
  16.   copy_img_b[:,:,1]=0
  17.   copy_img_b[:,:,2]=0
  18.   cv.imshow("b_img",copy_img_b)
复制代码
边界填充
  1. def border_fill_img(file="p.jpeg"):
  2.   border_type = [
  3.     cv.BORDER_REPLICATE,#复制法,复制边缘
  4.     cv.BORDER_REFLECT, #反射法,对感兴趣的图像中的像素在两边进行复制
  5.     cv.BORDER_REFLECT_101,#反射法,以边缘像素为轴,对称
  6.     cv.BORDER_WRAP,#外包装法
  7.     cv.BORDER_CONSTANT#常量法,常量填充
  8.     ]
  9.   border_title = [
  10.     "REPLICATE",
  11.     "REFLECT",
  12.     "REFLECT_101",
  13.     "WRAP",
  14.     "CONSTANT"
  15.     ]
  16.   img = cv.imread(file)
  17.   top_size,bottom_size,left_size,right_size = (50,50,50,50)
  18.   plt.subplot(231)
  19.   plt.imshow(img,"gray")#原始图像
  20.   plt.title("ORIGNAL")
  21.   for i in range(len(border_type)):
  22.     result = cv.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,border_type[i])
  23.     plt.subplot(232+i)
  24.     plt.imshow(result,"gray")
  25.     plt.title(border_title[i])
  26.   plt.show()
复制代码

图像融合,变更
  1. def img_compose(file1="tu.jpeg",file2="gui.jpeg"):
  2.   img_1 = cv.imread(file1)
  3.   img_2 = cv.imread(file2)
  4.   print (img_1.shape)
  5.   print (img_2.shape)
  6.   img_1= cv.resize(img_1,(500,500))
  7.   img_2= cv.resize(img_2,(500,500))
  8.   print (img_1.shape)
  9.   print (img_2.shape)
  10.   res = cv.addWeighted(img_1,0.4,img_2,0.6,0)
  11.   plt.imshow(res)
  12.   plt.show()
  13.   res = cv.resize(img_1,(0,0),fx=3,fy=1)
  14.   plt.imshow(res)
  15.   plt.show()
  16.   res = cv.resize(img_2,(0,0),fx=1,fy=3)
  17.   plt.imshow(res)
  18.   plt.show()
复制代码

二值化处置惩罚
  1. def Binarization(filepath):
  2.   img = cv2.imread(filepath,0)
  3.   limit = 120
  4.   ret,thresh=cv2.threshold(img,limit,255,cv2.THRESH_BINARY_INV)
  5.   plt.imshow(thresh,'gray')
  6.   plt.show()
  7.   return thresh
  8. Binarization('t1.jpg')
复制代码
到此这篇关于Python opencv操纵深入详解的文章就介绍到这了,更多干系Python opencv操纵内容请搜索草根技能分享以前的文章或继承欣赏下面的干系文章希望各人以后多多支持草根技能分享!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作