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

2024-06-22 09:48

本文主要是介绍彩色图像和灰色图像在一个窗口下显示,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

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

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

#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;

}


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


运行图片



这篇关于彩色图像和灰色图像在一个窗口下显示的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1083942

相关文章

Windows的CMD窗口如何查看并杀死nginx进程

《Windows的CMD窗口如何查看并杀死nginx进程》:本文主要介绍Windows的CMD窗口如何查看并杀死nginx进程问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows的CMD窗口查看并杀死nginx进程开启nginx查看nginx进程停止nginx服务

RedisTemplate默认序列化方式显示中文乱码的解决

《RedisTemplate默认序列化方式显示中文乱码的解决》本文主要介绍了SpringDataRedis默认使用JdkSerializationRedisSerializer导致数据乱码,文中通过示... 目录1. 问题原因2. 解决方案3. 配置类示例4. 配置说明5. 使用示例6. 验证存储结果7.

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

C/C++的OpenCV 进行图像梯度提取的几种实现

《C/C++的OpenCV进行图像梯度提取的几种实现》本文主要介绍了C/C++的OpenCV进行图像梯度提取的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录预www.chinasem.cn备知识1. 图像加载与预处理2. Sobel 算子计算 X 和 Y

c/c++的opencv图像金字塔缩放实现

《c/c++的opencv图像金字塔缩放实现》本文主要介绍了c/c++的opencv图像金字塔缩放实现,通过对原始图像进行连续的下采样或上采样操作,生成一系列不同分辨率的图像,具有一定的参考价值,感兴... 目录图像金字塔简介图像下采样 (cv::pyrDown)图像上采样 (cv::pyrUp)C++ O

idea中project的显示问题及解决

《idea中project的显示问题及解决》:本文主要介绍idea中project的显示问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录idea中project的显示问题清除配置重China编程新生成配置总结idea中project的显示问题新建空的pr

使用WPF实现窗口抖动动画效果

《使用WPF实现窗口抖动动画效果》在用户界面设计中,适当的动画反馈可以提升用户体验,尤其是在错误提示、操作失败等场景下,窗口抖动作为一种常见且直观的视觉反馈方式,常用于提醒用户注意当前状态,本文将详细... 目录前言实现思路概述核心代码实现1、 获取目标窗口2、初始化基础位置值3、创建抖动动画4、动画完成后

Python+wxPython构建图像编辑器

《Python+wxPython构建图像编辑器》图像编辑应用是学习GUI编程和图像处理的绝佳项目,本教程中,我们将使用wxPython,一个跨平台的PythonGUI工具包,构建一个简单的... 目录引言环境设置创建主窗口加载和显示图像实现绘制工具矩形绘制箭头绘制文字绘制临时绘制处理缩放和旋转缩放旋转保存编

python+OpenCV反投影图像的实现示例详解

《python+OpenCV反投影图像的实现示例详解》:本文主要介绍python+OpenCV反投影图像的实现示例详解,本文通过实例代码图文并茂的形式给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前言二、什么是反投影图像三、反投影图像的概念四、反向投影的工作原理一、利用反向投影backproj

电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案

《电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案》最近有不少兄弟反映,电脑突然弹出“mfc100u.dll已加载,但找不到入口点”的错误提示,导致一些程序无法正... 在计算机使用过程中,我们经常会遇到一些错误提示,其中最常见的就是“找不到指定的模块”或“缺少某个DL