彩色图像和灰色图像在一个窗口下显示

前面写了多张彩色图像或者多张单通道图像在一个窗口下显示,有时候需要彩色图像和黑白图像同事显示,方便对比。

以下即彩色图像和灰色图像在一个窗口下显示的代码:

现在在做项目是芯片检测。

#include <opencv2/opencv.hpp>

#include <highgui.h>

#include <cv.h>

#include <cxcore.h>

#include <iostream> 

#include <cv.h>  

#include <highgui.h>  

#include <stdio.h>  

#include <stdarg.h>  

#include <time.h>  

//========函数CombineImage(): 3通道和单通道图像合并  ======

IplImage *CombineImage(IplImage *rgbImg, IplImage *greyImg)  

{  

    if (rgbImg == NULL || greyImg == NULL)  

        return NULL;  

  

    int width = rgbImg->width;  

    int height = rgbImg->height;  

  

    IplImage *combImg = cvCreateImage(cvSize(width * 2, height), 8, 3);  

    IplImage *cvtImg = cvCreateImage(cvSize(width, height), 8, 3);  

    cvCvtColor(greyImg, cvtImg, CV_GRAY2BGR);  

  

    for (int row = 0; row < combImg->height; row++)  

    {  

        for (int col = 0; col < combImg->width; col++)  

        {  

            if (col < width)  

            {  

                CV_IMAGE_ELEM(combImg, unsigned char, row, 3 * col) = CV_IMAGE_ELEM(rgbImg, unsigned char, row, 3 * col);  

                CV_IMAGE_ELEM(combImg, unsigned char, row, 3 * col + 1) = CV_IMAGE_ELEM(rgbImg, unsigned char, row, 3 * col + 1);  

                CV_IMAGE_ELEM(combImg, unsigned char, row, 3 * col + 2) = CV_IMAGE_ELEM(rgbImg, unsigned char, row, 3 * col+ 2);  

            }  

            else  

            {  

                CV_IMAGE_ELEM(combImg, unsigned char, row, 3 * col) = CV_IMAGE_ELEM(cvtImg, unsigned char, row, 3 * (col-width));  

                CV_IMAGE_ELEM(combImg, unsigned char, row, 3 * col + 1) = CV_IMAGE_ELEM(cvtImg, unsigned char, row, 3 * (col - width) + 1);  

                CV_IMAGE_ELEM(combImg, unsigned char, row, 3 * col + 2) = CV_IMAGE_ELEM(cvtImg, unsigned char, row, 3 * (col - width) + 2);  

            }  

        }  

    }  

    cvReleaseImage(&cvtImg);  

    return combImg;  

//================================== 主函数 =======================================

int main(int argc,char** argv)

{

//加载原始彩色图片

IplImage* src_image = cvLoadImage("F:\\image\\贴片.jpg",

CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);

if (src_image == NULL)  return -1;


//平滑

IplImage* smooth_image = cvCreateImage(cvGetSize(src_image),IPL_DEPTH_8U,3);

cvSmooth(src_image,smooth_image,CV_MEDIAN /*CV_GAUSSIAN CV_BILATERAL*/,5,5,0,0);//CV_MEDIAN  CV_BILATERAL

//灰度化

IplImage* gray_image = cvCreateImage(cvGetSize(smooth_image),IPL_DEPTH_8U,1);

cvCvtColor(smooth_image,gray_image,CV_RGB2GRAY);

 //二值化转化成黑白图像

IplImage* canny_image = cvCreateImage(cvGetSize(gray_image),IPL_DEPTH_8U,1);

cvThreshold(gray_image,canny_image, 140, 255, CV_THRESH_BINARY);

//一张3通道和一张单通道图像合并

IplImage *combImg = CombineImage(src_image,canny_image); //图像合并函数


cvNamedWindow("CombineImage",1); 

cvResizeWindow("CombineImage",700,660);

cvShowImage( "CombineImage", combImg);  


cvWaitKey();  

cvReleaseImage(&combImg);   

        cvDestroyWindow("CombineImage");

cvReleaseImage(&filter_image);   

return 0;

}


//左侧是原彩色图,右边是二值化后的图像:


运行图片



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值