当前位置:   article > 正文

数字图像处理(2)---OPENCV--学习笔记(颜色,色域,控制条)_opencv显示图片可以看到色域

opencv显示图片可以看到色域

文章目录

  • 前言
  • 一、数字图像处理-----色彩空间
  • 二、图形绘制,RGB等色域
    • 1.颜色空间转化
    • 2.mat 数据结构,ndarray,深浅拷贝
    • 3.颜色通道分离合并
    • 4.画图(矩形,圆,多边形)
    • 5.文本绘制(写字)
  • 总结


前言

系列文章目录

数字图像处理                                :一共()章。

1.窗口,图像导入导出                :窗口,图像导入导出

 2.颜色,色域转换,控制条        :(本文章)

3.图像运算处理                           :文章操作链接                                

4.大作业数字图像处理                :大作业-数字图像处理

5.敬请期待


一、数字图像处理-----色彩空间

色彩空间--理论部分

 实验大作业所需理论部分        :大作业实验openCV-数字图像处理(所需理论)

二、操作

1.改变色域

代码如下(示例):

  1. #关键API cv2.cvtColor
  2. import cv2
  3. def callback(value):
  4. pass
  5. cv2.namedWindow('color',cv2.WINDOW_NORMAL)
  6. cv2.resizeWindow('color',700,680)
  7. img = cv2.imread('./pic/cat.png')
  8. #定义颜色空间
  9. colorspaces = [
  10. cv2.COLOR_BGR2RGBA,cv2.COLOR_BGR2BGRA,
  11. cv2.COLOR_BGR2GRAY,cv2.COLOR_BGR2HSV,
  12. cv2.COLOR_BGR2YUV
  13. ]
  14. #设置trackbar
  15. cv2.createTrackbar('trackbar','color',0,4, callback)
  16. cv2.putText(img,'cute cat',(30,300), cv2.FONT_HERSHEY_COMPLEX_SMALL,3,[0,255,0])
  17. while True:
  18. index = cv2.getTrackbarPos('trackbar','color')
  19. cvt_img = cv2.cvtColor(img, colorspaces[index])
  20. cv2.imshow('color',cvt_img)
  21. key = cv2.waitKey(10)
  22. if key == ord('a'):
  23. break
  24. cv2.destroyAllWindows()

 

2.mat 数据结构,ndarray,深浅拷贝

 理论部分:

B复制A,A变,B变,浅拷贝。  (相当于共享出去的)
B复制A,A变,B不变,深拷贝。 (独立复制出去的)

代码如下(示例):

  1. #CV用的mat数据结构,
  2. #mat是C++用的,python封装了一层,numpy的darray
  3. import cv2
  4. import numpy as np
  5. img = cv2.imread('./pic/cat.png')
  6. #浅拷贝
  7. img2 = img.view()
  8. #深拷贝
  9. img3 = img.copy()
  10. img [10:100,10:100] = [0,0, 255]
  11. cv2.imshow('img',np.hstack((img,img2,img3)))
  12. cv2.waitKey(0)
  13. cv2.destroyAllWindows()

3.颜色通道分离合并(RGB)

  1. import cv2
  2. import numpy as np
  3. img = cv2.imread('./pic/cat.png')
  4. b,g,r = cv2.split(img)
  5. b[10:100,10:100] = 255
  6. g[10:100,10:100] = 255
  7. img2 = cv2.merge((b, g, r))
  8. cv2.imshow('img',img)
  9. cv2.imshow('b',b)
  10. cv2.imshow('g',g)
  11. cv2.imshow('r',r)
  12. cv2.imshow('img2',img2)
  13. cv2.waitKey(0)
  14. cv2.destroyAllWindows()

 我们能看出每个色域会有区别,明亮程度

 4.画图(基于numpy的库)

         分别画矩形,圆,多边形:坐标形式:二维平面坐标--顺时针旋转90°,详情如下

        数字图像处理----坐标理论(二维三维)

  1. #直线,矩形cv2.line()
  2. import cv2
  3. import numpy as np
  4. img = np.zeros((480,640,3),np.uint8)
  5. # img,初始点,结束点,颜色,。。
  6. cv2.line(img,(10,20),(10,400),(0,0,255),5,4)
  7. cv2.line(img,(10,400),(300,400),(0,0,255),5,4)
  8. cv2.line(img,(300,400),(300,20),(0,0,255),5,4)
  9. cv2.line(img,(300,20),(10,20),(0,0,255),5,4)
  10. # img,初始点,对角点,颜色,。。
  11. cv2.rectangle(img,(30,40),(200,300),(0,255,0),5,4)
  12. cv2.imshow('draw',img)
  13. cv2.waitKey(0)
  14. cv2.destroyAllWindows()
  1. #圆
  2. import cv2
  3. import numpy as np
  4. img = np.zeros((480,640,3),np.uint8)
  5. # img,圆心,半径,颜色,。。
  6. cv2.circle(img,(320,240),100,(0,0,255),5,4)
  7. # img,圆心,,椭圆的a,b,角度,起始角度,结束角度,颜色,。。
  8. cv2.ellipse(img,(320,240),(100,50), 0, 0, 360, [0,0,255],5,16)
  9. cv2.circle(img,(320,240),45,(0,255,0),5,4)
  10. cv2.imshow('draw',img)
  11. cv2.waitKey(0)
  12. cv2.destroyAllWindows()
  1. #多边形
  2. import cv2
  3. import numpy as np
  4. img = np.zeros((480,640,3),np.uint8)
  5. #把每个点作为,数组一部分
  6. pts1 = np.array([[(100,100),(200,200),(100,300),(400,300)]],np.int32)
  7. cv2.polylines(img,[pts1],True,(0,0,255),5,4)
  8. #填充多边形
  9. pts = np.array([[(120,120),(220,220),(320,420),(450,360)]],np.int32)
  10. cv2.fillPoly(img,pts,(0,255,0))
  11. cv2.imshow('draw',img)
  12. cv2.waitKey(0)
  13. cv2.destroyAllWindows()

 

 5.文本绘制(写字)

 英文可以直接写,,但是中文需要额外的pillow包

  1. #文本
  2. import cv2
  3. import numpy as np
  4. img = np.zeros((480,640,3),np.uint8)
  5. cv2.putText(img,'hi na na',(30,300), cv2.FONT_HERSHEY_COMPLEX_SMALL,3,[0,255,0])
  6. cv2.imshow('draw',img)
  7. cv2.waitKey(0)
  8. cv2.destroyAllWindows()
  1. #使用OpenCV绘制中文,pillow包
  2. #Windows,自带很多字体
  3. #pip install pillow -i http://pypi.douban.com/simple
  4. #导入: from PIL import ImageFont, ImageDraw,Image
  5. from PIL import ImageFont, ImageDraw,Image
  6. img = np.full((480,640,3),fill_value = 255,dtype = np.uint8)
  7. font = ImageFont.truetype('./Fonts/msyh.ttc',15)
  8. img_pil = Image.fromarray(img)
  9. draw = ImageDraw.Draw(IMG_PIL)
  10. #draw.text((10,140), '妈妈',font=font, fill=(0, 255, 0, 0))
  11. draw.text((10,150), 'mama', font = font, fill = (0,0,255,0))
  12. img = np.array(img_pil)
  13. cv2.imshow('img',img)
  14. cv2.waitKey(0)
  15. cv2.destroyAllWindows()

 

总结

日积月累,第二章颜色变换,,期待第三章吧。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/593806
推荐阅读
相关标签
  

闽ICP备14008679号