opencv伪色彩增强 pseudocolor generation

本文介绍了使用OpenCV进行伪色彩增强的方法,包括基于特定准则的灰度值到彩色的转换算法,如空间域灰度级-彩色变换法、彩虹编码,并提供了相应的OpenCV代码示例。
摘要由CSDN通过智能技术生成



OpenCV232 這部份例程是去年做的


所以最近是不會再有更新了


我覺得還蠻有意義


是會繼續的






【22】伪色彩增强

伪彩色图像处理(也称假彩色)是根据特定的准则对灰度值赋以彩色的处理。

原图

        int w = 640;
        int h = 240;
        src.create(cvSize(w, h), CV_8U);

        for (int i=0; i<src.rows; ++i)
        {
                uchar *pt = src.ptr<uchar>(i);
                for (int j=0; j<src.cols; ++j)
                {
                        pt[j] = j;
                }
        }





直接用OpenCV的转换颜色函数
cvtColor(src, dst, CV_GRAY2RGB);
//失败,因为GRAY->RGB[A] R=Y G=Y B=Y A=0




这是cvchina上的一个算法
http://www.cvchina.info/2010/11/22/pseudocolor/#more-2153

说是讲某个点的灰度值按照9位 RGBRGBRGB取出R G B的数值
例如
(2)=(000 000 010)B分解出(000,100,000)B
然后再在后面补5个零够9位
那就是(000 000 000,010 000 000,000 000 000)B
就是灰度值2对应RGB(0,128,0)

是不是很晕

再来一个
(121) = (001 111 001)B分解出(010,010,111)B
然后补齐(001 000 000,001 000 000,111 000 00)B
就是灰度121对应RGB(64,64,224)

void myPseudocolorGeneration(InputArray src,OutputArray dst)
{
        Mat red(1,256, CV_8U),green(1,256, CV_8U),blue(1,256, CV_8U);

        int bit_per_channle = 3;
        int bits_total = 3*bit_per_channle;
        int color_num = 1<<bits_total;

    for(int c = 0; c < color_num/2; c++)
        {
        int r = 0;
        int g = 0;
        int b = 0;
        for(int k = 0; k < bits_total ; )
                {
            b = (b << 1) + ((c >> k++) & 1);
            g = (g << 1) + ((c >> k++) & 1);
            r = (r << 1) + ((c >> k++) & 1);
        }
        r = r << (8 - bit_per_channle);
        g = g <&

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
通过使用OpenCV库中的函数和方法,可以实现对图像的色彩增强。您可以使用cv2库中的cv.cvtColor()函数来实现图像色彩空间的转换。该函数接受两个参数,第一个参数是原始图像,第二个参数是色彩空间的转换方式。常用的色彩空间包括BGR、HSV、灰度等。例如,要将图像转换为灰度图像,可以使用以下代码: import cv2 as cv img = cv.imread(image_path, cv.IMREAD_COLOR) gray_img = cv.cvtColor(img, cv.COLOR_BGR2GRAY) 另外,如果您想要进行图像的翻转操作,可以使用cv.flip()函数。该函数接受两个参数,第一个参数是原始图像,第二个参数是翻转的方式。常用的翻转方式有上下翻转、左右翻转和对角线翻转。以下是一个示例代码: import cv2 as cv import numpy as np img = cv.imread(image_path, cv.IMREAD_COLOR) # 上下翻转 dst1 = cv.flip(img, 0) # 左右翻转 dst2 = cv.flip(img, 1) # 对角线翻转 dst3 = cv.flip(img, -1) 您还可以使用形态学操作进行图像处理,包括腐蚀、膨胀、开运算、闭运算等。以下是一个示例代码: import cv2 import numpy as np ori = cv2.imread("1.jpg") kernel = np.ones((5, 5), np.uint8) # 礼帽运算 result = cv2.morphologyEx(ori, cv2.MORPH_GRADIENT, kernel) 请根据您的需求选择和使用适当的函数和方法来实现色彩增强。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [基于Python3.6中的OpenCV实现图片色彩空间的转换](https://download.csdn.net/download/weixin_38710557/12856005)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [opencv-python图像增强](https://blog.csdn.net/WSNjiang/article/details/125282229)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值