OpenCV之图像像素&图像色彩通道

一次OpenCV相关作业,有一个助教小姐姐写的tutorial,很有用,链接如下:

链接:http://pan.baidu.com/s/1bZHsJk  密码:854s

1. 色彩空间:

将RGB图像转换成ycrcb和hsv图像并保存每种色彩空间每个通道的图像。

import cv2
import numpy as np

img=cv2.imread(‘/Users/wangmengxi/Documents/mercy/ec601/openCV/ex2/rice_grains/rice_grains.jpg‘,cv2.IMREAD_COLOR)
hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
ycrcb=cv2.cvtColor(img,cv2.COLOR_BGR2YCrCb)

R, G, B = cv2.split(img)
cv2.imwrite("/Users/wangmengxi/Documents/mercy/ec601/openCV/ex2/rice_grains/Red.jpg", R)
cv2.imwrite("/Users/wangmengxi/Documents/mercy/ec601/openCV/ex2/rice_grains/Green.jpg",G)
cv2.imwrite("/Users/wangmengxi/Documents/mercy/ec601/openCV/ex2/rice_grains/Blue.jpg",B)

H,S,V=cv2.split(hsv)
cv2.imwrite("/Users/wangmengxi/Documents/mercy/ec601/openCV/ex2/rice_grains/Hue.jpg",H)
cv2.imwrite("/Users/wangmengxi/Documents/mercy/ec601/openCV/ex2/rice_grains/Saturation.jpg",S)
cv2.imwrite("/Users/wangmengxi/Documents/mercy/ec601/openCV/ex2/rice_grains/Value.jpg",V)

Y,Cb,Cr=cv2.split(ycrcb)
cv2.imwrite("/Users/wangmengxi/Documents/mercy/ec601/openCV/ex2/rice_grains/Y.jpg",Y)
cv2.imwrite("/Users/wangmengxi/Documents/mercy/ec601/openCV/ex2/rice_grains/Cb.jpg",Cb)
cv2.imwrite("/Users/wangmengxi/Documents/mercy/ec601/openCV/ex2/rice_grains/Cr.jpg",Cr)

输入:

输出:

Blue:

Red:

Green:

Cb:

Cr:

Y:

Hue:

Saturation:

Value:

分离通道:

R, G, B = cv2.split(img)

2. 计算图像像素:

下面代码是用来计算图像在(20,25)处的像素(分别是RGB, ycrcb和hsv通道的图)

#!/usr/bin/env python
# encoding: utf-8    

import numpy as np
import cv2  

baboon = cv2.imread("/Users/wangmengxi/Documents/mercy/ec601/openCV/OpenCV_homework/Test_images/baboon.jpg")
hsv=cv2.cvtColor(baboon,cv2.COLOR_BGR2HSV)
ycrcb=cv2.cvtColor(baboon,cv2.COLOR_BGR2YCrCb)
(b,g,r) = baboon[20,25]
(Cr,Cb,Y)=ycrcb[20,25]
(v,s,h)=hsv[20,25]
#print("baboon.jpg:")
print("BGR:")

print(b,g,r)

print("ycrcb:")

print(Cr,Cb,Y)

print("hsv:")
print(v,s,h)

注意:要把imread中的路径换成自己的图片路径

python版本:python2.7

输入:

输出:

问题:

What are the ranges of pixel values in each channel of each of the above mentioned colorspaces?

value range of R,G,B : 0~255
value range of Y,U,V : 16~235,16~240,16~240
value range of H,S,V : 0~180,0~255,0~255
value range of L,A,B : 0~100,-127~127,-127~127
value range of C,M,Y,K : 0~100
时间: 2024-08-01 16:19:13

OpenCV之图像像素&图像色彩通道的相关文章

opencv 访问图像像素的三种方式

访问图像中的像素 访问图像像素有三种可行的方法方法一:指针访问指针访问访问的速度最快,Mat类可以通过ptr函数得到图像任意一行的首地址,同时,Mat类的一些属性也可以用到公有属性 rows和cols 表示行和列通道数可以通过channels()函数获得:void visitPix1(){ Mat srcImg = imread("jpg/1.jpeg"); Mat dstImg; srcImg.copyTo(dstImg); int rowNum = dstImg.rows; int

opencv学习(5)图像像素的访问、颜色通道的分离和融合

代码都是源于毛星云的<opencv3.0编程入门> 1.计时函数 getTickCount()和getTickFrequency()函数: getTickCount()函数返回CPU自某个事件以来走过的时钟周期: getTickFrequency()函数 返回CPU一秒所走的周期数: 事例: double time0=static_cast< double>(getTickCount()); //记录起始时间 // 事件的处理操作 time0=((double)getTickCou

opencv高效访问图像像素(遍历像素的方法总结)

一.Accessingpixel values访问像素值.(用类自带的方法:方便,但效率不高) 1.      cv::Mat has the a templatemethod at(int y, int x) 用法image.at<cv::Vec3b>(j,i)[channel]= value; 注意事项:the programmer needs to specify the return type that is expected(需认为指定返回值类型),一般使用type cv::Vec3

opencv图像像素值读取

说到图像像素,肯定要先认识一下图像中的坐标系长什么样. 1. 坐标体系中的零点坐标为图片的左上角,X轴为图像矩形的上面那条水平线:Y轴为图像矩形左边的那条垂直线.该坐标体系在诸如结构体Mat,Rect,Point中都是适用的.(OpenCV中有些数据结构的坐标原点是在图片的左下角,可以设置的). 2. 在使用image.at<TP>(x1, x2)来访问图像中点的值的时候,x1并不是图片中对应点的x轴坐标,而是图片中对应点的y坐标(也就是编程中的pic.rows那行).x2同理. 3. 如果所

Opencv中图像的遍历与像素操作

Opencv中图像的遍历与像素操作 OpenCV中表示图像的数据结构是cv::Mat,Mat对象本质上是一个由数值组成的矩阵.矩阵的每一个元素代表一个像素,对于灰度图像,像素是由8位无符号数来表示(0代表黑,255代表白):对于彩色图像,每个像素是一个三元向量,即由三个8位无符号数来表示三个颜色通道(Opencv中顺次为蓝.绿.红). 我们先来介绍下cv::Mat类的获取像素的成员函数at(),其函数原型如下: template<typename _Tp> _Tp& at(int i0

OpenCV基础(二)---图像像素操作

图像像素操作 通过访问图像的像素,对灰度图像和RGB图像进行反差. 例如,在灰度图像中,某一个像素值为,pixel_value. 那么反差后的pixel_value = 255 - pixel_value. 对RGB图像处理类似,差别在于要对每一个颜色通道进行反差. 方法1: 1 #include <opencv2/opencv.hpp> 2 #include <iostream> 3 4 using namespace cv; 5 using namespace std; 6 7

用opencv读取图像鼠标点的像素,更正一个Bug

作者:skyseraph 出处:http://www.cnblogs.com/skyseraph/ 以下代码在网上流传很广. 不过,调试运行之后发现,功能是正确的,但是内存很快就耗尽,导致死机.经过查找,加上: cvReleaseImage(&img1);    //释放源图像占用的内存 这一行是我(szliug)加的,否则内存很快就会耗尽,会死机的. 之后运行正常. /*===============================================// 功能:OpenCV Ut

VC++6.0下通过opencv读入图像并反色

第一个opencv测试程序: 不多说,直接上代码,代码注释很详尽: //////////////////////////////////////////////////////////////////////// // // 该程序从文件中读入一幅图像,将之反色,然后显示出来. // //////////////////////////////////////////////////////////////////////// #include <stdlib.h> #include <

图像像素的获取和操作(第三天)

图像处理顾名思义就是对图像的像素进行操作,这是核心基础! 有三种方法对图像的操作:(图像像素的获取参差在其中) 第一种:使用指针进行操作 这个指针在上一篇博文中已经提到,这节博文进行加深理解. 先讲解opencv的指针应用: 1 Mat image = cv::Mat(400, 600, CV_8UC3); //宽400,长600,3通道彩色图片 rows=400,cols=600 2 uchar * data000 = image.ptr<uchar>(0);//第一行第一个元素地址 3 u