opencv提取图像的缺陷并用最小矩形框出来

2023-10-23 07:32

本文主要是介绍opencv提取图像的缺陷并用最小矩形框出来,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

看代码:

	IplImage *g = cvLoadImage("C:\\Users\\Administrator\\Desktop\\21.jpg");IplImage* src = cvCreateImage(cvGetSize(g), IPL_DEPTH_8U, 1);//转化为单通道黑白照片CvScalar pixel1;double temp;for (int i = 0; i < g->height - 1; ++i){for (int j = 0; j < g->width - 1; ++j){pixel1 = cvGet2D(g, i, j);temp = 0.11*pixel1.val[0] + 0.59*pixel1.val[1] + 0.30*pixel1.val[2];cvSet2D(src, i, j, temp);}}CvMemStorage* storage = cvCreateMemStorage(0);CvSeq* contour = 0;cvNamedWindow("image0", 1);cvShowImage("image0", src);int   hei = src->height;int   wid = src->width;uchar *data = (uchar*)src->imageData;int widstep = src->widthStep;int channel = src->nChannels;IplImage *dst = cvCreateImage(cvSize(wid, hei), IPL_DEPTH_8U, 3);// invert the image  for (int i = 0; i<hei; i++){for (int j = 0; j<wid; j++){if (data[i*widstep + j*channel]>160){data[i*widstep + j*channel] = 255;}else{data[i*widstep + j*channel] = 0;}}}cvNamedWindow("image", 0);cvShowImage("image", src);printf("图像的高为:%d,宽为:%d\n\n", hei, wid);cvCvtColor(src, dst, CV_GRAY2BGR);cvFindContours(src, storage, &contour, sizeof(CvContour), CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE);for (; contour != 0; contour = contour->h_next){CvBox2D rect = cvMinAreaRect2(contour, storage);double area = rect.size.height* rect.size.width;if (area < 1000)continue;CvPoint2D32f rect_pts0[4];cvBoxPoints(rect, rect_pts0);int npts = 4, k = 0;int aaa = 0, bbb = 0;CvPoint rect_pts[4], *pt = rect_pts;printf("连通区域最小外接矩形顶点坐标分别为:\n");for (int i = 0; i<4; i++){rect_pts[i] = cvPointFrom32f(rect_pts0[i]);printf("%d %d\n", rect_pts[i].x, rect_pts[i].y);aaa = (int)sqrt((pow((rect_pts[0].x - rect_pts[1].x), 2) + pow((rect_pts[0].y- rect_pts[1].y), 2)));bbb = (int)sqrt((pow((rect_pts[0].x - rect_pts[3].x), 2) + pow((rect_pts[0].y - rect_pts[3].y), 2)));if (aaa<bbb){k = aaa;aaa = bbb;bbb = k;}}printf("最小外接矩形的长为:%d宽为:%d。\n\n", aaa, bbb);cvPolyLine(g, &pt, &npts, 1, 1, CV_RGB(255, 0, 0), 1);}cvNamedWindow("image1", 1);cvShowImage("image1", g);cvNamedWindow("image", 1);cvShowImage("image", src);cvWaitKey(0);cvDestroyWindow("image");cvDestroyWindow("image1");cvReleaseImage(&src);cvReleaseImage(&g);

效果如图:

这篇关于opencv提取图像的缺陷并用最小矩形框出来的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

一文详解如何在Python中从字符串中提取部分内容

《一文详解如何在Python中从字符串中提取部分内容》:本文主要介绍如何在Python中从字符串中提取部分内容的相关资料,包括使用正则表达式、Pyparsing库、AST(抽象语法树)、字符串操作... 目录前言解决方案方法一:使用正则表达式方法二:使用 Pyparsing方法三:使用 AST方法四:使用字

在PyCharm中安装PyTorch、torchvision和OpenCV详解

《在PyCharm中安装PyTorch、torchvision和OpenCV详解》:本文主要介绍在PyCharm中安装PyTorch、torchvision和OpenCV方式,具有很好的参考价值,... 目录PyCharm安装PyTorch、torchvision和OpenCV安装python安装PyTor

openCV中KNN算法的实现

《openCV中KNN算法的实现》KNN算法是一种简单且常用的分类算法,本文主要介绍了openCV中KNN算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录KNN算法流程使用OpenCV实现KNNOpenCV 是一个开源的跨平台计算机视觉库,它提供了各

OpenCV图像形态学的实现

《OpenCV图像形态学的实现》本文主要介绍了OpenCV图像形态学的实现,包括腐蚀、膨胀、开运算、闭运算、梯度运算、顶帽运算和黑帽运算,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起... 目录一、图像形态学简介二、腐蚀(Erosion)1. 原理2. OpenCV 实现三、膨胀China编程(

详解C#如何提取PDF文档中的图片

《详解C#如何提取PDF文档中的图片》提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使用,下面我们就来看看如何使用C#通过代码从PDF文档中提取图片吧... 当 PDF 文件中包含有价值的图片,如艺术画作、设计素材、报告图表等,提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使

opencv图像处理之指纹验证的实现

《opencv图像处理之指纹验证的实现》本文主要介绍了opencv图像处理之指纹验证的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、简介二、具体案例实现1. 图像显示函数2. 指纹验证函数3. 主函数4、运行结果三、总结一、

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

Python实现常用文本内容提取

《Python实现常用文本内容提取》在日常工作和学习中,我们经常需要从PDF、Word文档中提取文本,本文将介绍如何使用Python编写一个文本内容提取工具,有需要的小伙伴可以参考下... 目录一、引言二、文本内容提取的原理三、文本内容提取的设计四、文本内容提取的实现五、完整代码示例一、引言在日常工作和学

C++字符串提取和分割的多种方法

《C++字符串提取和分割的多种方法》在C++编程中,字符串处理是一个常见的任务,尤其是在需要从字符串中提取特定数据时,本文将详细探讨如何使用C++标准库中的工具来提取和分割字符串,并分析不同方法的适用... 目录1. 字符串提取的基本方法1.1 使用 std::istringstream 和 >> 操作符示

基于Python开发批量提取Excel图片的小工具

《基于Python开发批量提取Excel图片的小工具》这篇文章主要为大家详细介绍了如何使用Python中的openpyxl库开发一个小工具,可以实现批量提取Excel图片,有需要的小伙伴可以参考一下... 目前有一个需求,就是批量读取当前目录下所有文件夹里的Excel文件,去获取出Excel文件中的图片,并