python中color的用法_Python-OpenCV中cv2.cvtColor的使用

? 本文主要记录Python-OpenCV中cv2.cvtColor()的使用;

cv2.cvtColor()

? 转换图像的颜色空间;官方文档

def cvtColor(src, code, dst=None, dstCn=None):

"""

转换图像的颜色空间

Argument:

src: 原图像;

code: 指定颜色空间转换类型;

dst: 目标图像;与原图像大小深度一致;

dstCn: 指定目标图像通道数;默认None,则会根据src、code自动计算;

"""

使用:

#!/usr/bin/env python

#-*- coding:utf-8 -*-

# @Time : 19-4-20 下午3:23

# @Author : chen

"""

opencv读取的图像是BGR格式;

OpenCV可以指定颜色空间转换形式,包括:

RGB与其他颜色空间的转换

BGR与其他颜色空间的转换

"""

import matplotlib.pyplot as plt

import cv2

lena_BGR = cv2.imread("./lena.png")

# show BGR lena

plt.subplot(3, 3, 1)

plt.imshow(lena_BGR)

plt.axis('off')

plt.title('lena_BGR')

# BGR to RGB

lena_RGB = cv2.cvtColor(lena_BGR, cv2.COLOR_BGR2RGB)

plt.subplot(3, 3, 2)

plt.imshow(lena_RGB)

plt.axis('off')

plt.title('lena_RGB')

# BGR to GRAY

lena_GRAY = cv2.cvtColor(lena_BGR, cv2.COLOR_BGR2GRAY)

plt.subplot(3, 3, 3)

plt.imshow(lena_GRAY)

plt.axis('off')

plt.title('lena_GRAY')

# BGR to CIE XYZ

lena_CIEXYZ = cv2.cvtColor(lena_BGR, cv2.COLOR_BGR2XYZ)

plt.subplot(3, 3, 4)

plt.imshow(lena_CIEXYZ)

plt.axis('off')

plt.title('lena_CIEXYZ')

# BGR to YCrCb

lena_YCrCb = cv2.cvtColor(lena_BGR, cv2.COLOR_BGR2YCrCb)

plt.subplot(3, 3, 5)

plt.imshow(lena_YCrCb)

plt.axis('off')

plt.title('lena_YCrCb')

# BGR to HSV

lena_HSV = cv2.cvtColor(lena_BGR, cv2.COLOR_BGR2HSV)

plt.subplot(3, 3, 6)

plt.imshow(lena_HSV)

plt.axis('off')

plt.title('lena_HSV')

# BGR to HLS

lena_HLS = cv2.cvtColor(lena_BGR, cv2.COLOR_BGR2HLS)

plt.subplot(3, 3, 7)

plt.imshow(lena_HLS)

plt.axis('off')

plt.title('lena_HLS')

# BGR to CIE L*a*b

lena_Lab = cv2.cvtColor(lena_BGR, cv2.COLOR_BGR2Lab)

plt.subplot(3, 3, 8)

plt.imshow(lena_Lab)

plt.axis('off')

plt.title('lena_Lab')

# BGR to CIE L*u*v

lena_Luv = cv2.cvtColor(lena_BGR, cv2.COLOR_BGR2Luv)

plt.subplot(3, 3, 9)

plt.imshow(lena_Luv)

plt.axis('off')

plt.title('lena_Luv')

plt.show()

1. RGB to GRAY

RGB to GRAY:

\[

Y = 0.299 \cdot R + 0.587 \cdot G + 0.114\cdot B

\]

GRAY to RGB:

\[

R = Y, \ G=Y, \ B = Y, \ A = max(ChannelRange)

\]

2. RGB to CIE XYZ

3. RGB to YCrCb JPEG

4. RGB to HSV

5. RGB to HLS

6. RGB to CIE L*a*b

7. RGB to CIE L*u*v

原文:https://www.cnblogs.com/chenzhen0530/p/10741264.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用OpenCV进行轮廓检测、斑点检测或圆形检测可以使用以下代码: 首先,导入必要的库和读取图像: ```python import cv2 import numpy as np img = cv2.imread('image.jpg') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) ``` 接下来,使用阈值处理将图像转换为二进制图像: ```python ret, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU) ``` 接着,使用形态学操作去除噪点: ```python kernel = np.ones((3,3), np.uint8) opening = cv2.morphologyEx(thresh,cv2.MORPH_OPEN,kernel,iterations=2) ``` 对于轮廓检测,可以使用`cv2.findContours()`函数: ```python contours, hierarchy = cv2.findContours(opening,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE) ``` 对于斑点检测或圆形检测,可以使用`cv2.HoughCircles()`函数: ```python circles = cv2.HoughCircles(opening,cv2.HOUGH_GRADIENT,1,20,param1=50,param2=30,minRadius=0,maxRadius=0) ``` 最后,可以将检测结果可视化: ```python cv2.drawContours(img, contours, -1, (0,0,255), 2) for i in circles[0,:]: cv2.circle(img,(i[0],i[1]),i[2],(0,255,0),2) cv2.imshow('image',img) cv2.waitKey(0) cv2.destroyAllWindows() ``` 完整代码如下: ```python import cv2 import numpy as np img = cv2.imread('image.jpg') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) ret, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU) kernel = np.ones((3,3), np.uint8) opening = cv2.morphologyEx(thresh,cv2.MORPH_OPEN,kernel,iterations=2) contours, hierarchy = cv2.findContours(opening,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE) circles = cv2.HoughCircles(opening,cv2.HOUGH_GRADIENT,1,20,param1=50,param2=30,minRadius=0,maxRadius=0) cv2.drawContours(img, contours, -1, (0,0,255), 2) for i in circles[0,:]: cv2.circle(img,(i[0],i[1]),i[2],(0,255,0),2) cv2.imshow('image',img) cv2.waitKey(0) cv2.destroyAllWindows() ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值