魔方机器人之视觉学习

魔方机器人之视觉学习

1.使用OpenCV打开电脑摄像头

//执行代码

#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/videoio.hpp>
#include<sstream>


int main(int argc, char* argv[])
{
    
    cv::VideoCapture cap;   //声明相机捕获对象

  
    cap.set(cv::CAP_PROP_FOURCC, cv::VideoWriter::fourcc('M','J','P','G')); 
    cap.set(cv::CAP_PROP_FRAME_WIDTH, 640); //图像的宽,需要相机支持此宽
    cap.set(cv::CAP_PROP_FRAME_HEIGHT, 480); //图像的高,需要相机支持此高
    //图像分辨率640×480

    int deviceID = 0; //相机设备号
    
    cap.open(deviceID); //打开相机

    if (!cap.isOpened()) //判断相机是否打开
    {
        std::cerr << "ERROR!!Unable to open camera\n";
        return -1;
    }

    cv::Mat img;
    while (true)
    {
        cap >> img; //以流形式捕获图像

        cv::namedWindow("example", 1); //创建一个窗口用于显示图像,1代表窗口适应图像的分辨率进行拉伸。
        if (img.empty() == false) //图像不为空则显示图像
        {
            cv::imshow("example", img);
        }
        
        int  key = cv::waitKey(30); //等待30ms
        if (key ==  int('q')) //按下q退出
        {
            break;
        }

    }
    cap.release(); //释放相机捕获对象
    cv::destroyAllWindows(); //关闭所有窗口
        
    return 0;

}


2.了解摄像头参数的意义

增益:img

曝光:图片的阴暗程度

白平衡:相机的白平衡是一种技术,用于调整相机对不同光源下的色温的感知,以便照片中的颜色更真实、更自然。在不同的光线环境下,相机所捕捉到的颜色会有所不同。例如,白炽灯的色温较暖,而日光灯的色温较冷,因此在不同的光线环境下拍摄同一个场景,照片的颜色可能会有所偏差。

为了解决这个问题,相机的白平衡系统会根据环境中的光线条件自动调整相机的色温设置,以确保照片中的颜色看起来更加自然。如果相机的白平衡设置不正确,照片中的颜色可能会呈现出蓝色或黄色色偏。因此,在不同的拍摄环境下,合理地使用相机的白平衡设置是拍摄高质量照片的重要一步。

对比度:相机的对比度是指照片中亮度差异的程度,通常被描述为白色和黑色之间的差异。在摄影中,对比度的调整可以影响照片的整体外观和感觉,因为它可以增强或减弱图像中的细节和纹理。

如果照片的对比度较低,它可能会显得平淡无奇,缺乏清晰度和明显的细节。相反,如果照片的对比度过高,会出现过度曝光或过度阴影的现象,导致细节损失或是出现光斑等瑕疵。

相机中的对比度可以通过多种方式进行调整。例如,相机中的曝光补偿功能可以通过增加或减少照片的亮度来改变对比度。此外,相机中的对比度设置,如高对比度、低对比度、自然对比度等,也可以帮助拍摄者调整照片的对比度水平。在后期处理中,也可以通过电脑软件进行对比度的调整。

饱和度:相机的饱和度是指照片中颜色的鲜艳程度或强度。如果一张照片的饱和度较高,颜色会显得更加鲜艳饱满,而如果饱和度较低,颜色则会显得更加柔和或淡化。

相机中的饱和度设置通常以数字或符号表示,例如-2到+2,或者低、中、高等符号表示。调整相机的饱和度可以影响拍摄的效果,例如,增加饱和度可以让颜色更加鲜艳,从而产生更加生动的画面。相反,减少饱和度可以产生柔和、艺术感和自然的效果。

需要注意的是,过度增加饱和度会使得颜色变得不自然,出现颜色偏差。此外,照片的色彩饱和度也可以在后期处理中进行调整

像素位深:相机的像素位深(也称为位宽)是指每个像素的颜色信息所占用的位数。在数字图像中,每个像素的颜色信息由一个数字来表示,该数字的大小与颜色的亮度和饱和度成比例。

通常,相机的像素位深越高,可以记录的颜色细节就越多,图像的颜色也更加精确和自然。常见的像素位深有8位、10位、12位等等,其中8位像素深度的照片通常被称为“8位图像”,而10位或12位像素深度的照片被称为“高位深图像”。

需要注意的是,相机的像素位深并不是相机分辨率的同义词。相机的分辨率是指相机所能捕捉到的图像中像素数量的总和,而像素位深是指每个像素可以表示的颜色信息的数量。通常情况下,分辨率和像素位深都是影响图像质量的重要因素。

3.RGB和HSV色彩通道

RGB:RGB通道是指一幅数字图像中的三种基本颜色通道,即红色通道(R)、绿色通道(G)和蓝色通道(B),这三种颜色可以组合出所有其他颜色。

在数字图像中,每个像素都由一个包含红、绿、蓝三个通道值的三元组表示。这三个通道的值通常采用0-255的数字来表示,其中0表示通道的最小值,255表示通道的最大值。

通过对RGB通道进行调整,可以对图像的颜色进行微调,例如增加红色通道的值可以使图像中的红色更加鲜艳,减少蓝色通道的值可以减弱图像中的蓝色调。此外,RGB通道也可以用于进行特殊效果的创作,例如反转通道、交换通道等等。

需要注意的是,RGB通道只是数字图像中的一种表示方式,还有其他的颜色表示方式,例如CMYK、LAB等等,每种表示方式都有自己的特点和应用场景。

HSV:HSV通道是指一种颜色空间,HSV代表色相(Hue)、饱和度(Saturation)和亮度(Value),也称为HSB(色相、饱和度、亮度)颜色空间。

HSV通道的色相分量表示了颜色的种类,饱和度分量表示了颜色的鲜艳程度或强度,亮度分量表示了颜色的明暗程度。

与RGB通道不同,HSV通道中的每个分量并不是独立的,而是通过一定的计算和转换关系来相互关联。在HSV通道中,色相的取值范围是0到360度,饱和度和亮度的取值范围均为0到1之间的实数。

HSV通道的应用广泛,可以用于数字图像的颜色处理和特效制作,例如通过调整饱和度和亮度来调整图像的色彩和明暗度,通过调整色相来更改图像的色调。HSV通道也可以与RGB通道进行转换,用于不同颜色空间之间的转换和映射。

4.图像编码形式

jpeg: JPEG是一种常见的数字图像压缩格式,它使用了一种称为离散余弦变换(DCT)的技术来减少图像文件的大小,从而节省存储空间和传输带宽。

JPEG编码将一幅图像分成小块,并在每个块上应用DCT变换,将每个块的信息转换成一系列系数。然后,通过丢弃一些较小的系数和量化剩余系数来减少文件的大小。最后,使用哈夫曼编码对量化后的系数进行压缩和编码,生成JPEG图像文件。

JPEG编码具有高度的压缩率,可以将文件大小压缩到原始图像大小的10%以下,但由于压缩的过程中丢失了一些图像信息,所以在高压缩比下可能会出现明显的失真和伪影。为了平衡压缩比和图像质量之间的关系,JPEG编码提供了不同的压缩质量选项,允许用户根据具体需求选择适当的压缩质量。

需要注意的是,JPEG编码是一种有损压缩方法,与无损压缩格式(如PNG)不同,它不适合用于需要精确还原图像细节和颜色的场合。

png: PNG是一种数字图像格式,全称为Portable Network Graphics,它是一种无损压缩格式,可以在不损失图像质量的情况下减小图像文件的大小。

PNG格式使用一种称为DEFLATE的压缩算法来减少文件大小,它是一种无损压缩算法,因此在解压缩时可以完全还原原始图像,不会出现失真和伪影。PNG格式支持alpha通道,可以保存透明度信息,使得图像可以在背景色不同的情况下使用。

相比于JPEG格式,PNG格式不会在压缩过程中丢失图像信息,因此适用于需要保持高质量图像的场合,例如图像处理、图像设计、网络图形等领域。但PNG格式的文件大小通常较大,因此在需要存储大量图像文件的场合,应根据实际需求选择适当的图像格式。

需要注意的是,虽然PNG格式是无损压缩格式,但它并不适合用于存储大量颜色丰富的图像,例如照片,因为PNG格式的压缩率相对较低,会导致文件大小较大。此外,某些低端的图像软件和设备可能不支持PNG格式,因此在选择图像格式时应根据具体需求和使用场景做出选择。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值