《学习OpenCV》练习题第三章第八题a

Python OpenCV 练习指南 02:图像基础操作 练习题 1:编写一个Python脚本来加载一张图像,然后找到图像中左上角顶点坐标为(200, 200),边长为200个像素的正方形区域的像素值,并将该区域内的所有像素修改为红色。Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。提示:灰度值可以通过取每个像素的BGR值的平均值来计算。观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。最后祝大家天天进步! 阅读详情
#include <highgui.h>
#include <cv.h>
#include <stdio.h>

#pragma comment (lib,"opencv_calib3d231d.lib")
#pragma comment (lib,"opencv_contrib231d.lib")
#pragma comment (lib,"opencv_core231d.lib")
#pragma comment (lib,"opencv_features2d231d.lib")
#pragma comment (lib,"opencv_flann231d.lib")
#pragma comment (lib,"opencv_gpu231d.lib")
#pragma comment (lib,"opencv_haartraining_engined.lib")
#pragma comment (lib,"opencv_highgui231d.lib")
#pragma comment (lib,"opencv_imgproc231d.lib")
#pragma comment (lib,"opencv_legacy231d.lib")
#pragma comment (lib,"opencv_ml231d.lib")
#pragma comment (lib,"opencv_objdetect231d.lib")
#pragma comment (lib,"opencv_ts231d.lib")
#pragma comment (lib,"opencv_video231d.lib")

/*
 *《学习OpenCV》第三章第八题a
 * 完成时间:19:12 4/4 星期四  2013
 */

typedef struct my_struct
{
	int i;
	CvPoint point;
	CvRect rect;
} MyStruct;

void write_my_struct(CvFileStorage * fs, const char* name, my_struct*  ms)
{
	//开始写数据
	cvStartWriteStruct(fs, name, 6);

	//写入一个 整数
	cvStartWriteStruct(fs,"integer",CV_NODE_SEQ);
	cvWriteInt(fs,NULL,ms->i);
	cvEndWriteStruct(fs);

	//写入cvpoint结构
	cvStartWriteStruct(fs,"CvPoint",CV_NODE_SEQ);
	cvWriteInt(fs,NULL,ms->point.x);
	cvWriteInt(fs,NULL,ms->point.y);
	cvEndWriteStruct(fs);
    
	//写入rect结构体
	cvStartWriteStruct(fs,"CvRect",CV_NODE_SEQ);
	cvWriteInt(fs,NULL,ms->rect.x);
	cvWriteInt(fs,NULL,ms->rect.y);
	cvWriteInt(fs,NULL,ms->rect.height);
	cvWriteInt(fs,NULL,ms->rect.width);
	cvEndWriteStruct(fs);
     
	//结束写数据
	cvEndWriteStruct(fs);
}

void read_my_struct(CvFileStorage* fs, CvFileNode* ms_node, my_struct* ms)
{
	// 读第一个整数
	// 注意:这里应使用node->data.i的value来读取Integer
	int i = cvGetFileNodeByName(fs, ms_node, "integer")->data.i;
	ms->i = i;

	// 读CvPoint结构
	CvSeq *s1 = cvGetFileNodeByName(fs, ms_node, "CvPoint")->data.seq;
	CvPoint point;
	point.x= cvReadInt((CvFileNode*)cvGetSeqElem(s1,0));
	point.y= cvReadInt((CvFileNode*)cvGetSeqElem(s1,1));
	ms->point = point;

	// 读取CvRect结构
	CvSeq *s2 = cvGetFileNodeByName(fs, ms_node, "CvRect")->data.seq;
	CvRect rect;
	rect.x=cvReadInt((CvFileNode*)cvGetSeqElem(s2, 0));
	rect.y=cvReadInt((CvFileNode*)cvGetSeqElem(s2, 1));
	rect.width=cvReadInt((CvFileNode*)cvGetSeqElem(s2, 3));
	rect.height=cvReadInt((CvFileNode*)cvGetSeqElem(s2, 2));
	ms->rect = rect;
}

// 将MyStruct的值显示出来
void ShowStructValue(MyStruct* pvalue)
{
	printf("integer:%d\n", pvalue->i);
	printf("CvPoint: (%d, %d)\n", pvalue->point.x, pvalue->point.y );
	printf("CvRect: h-->%d\tw-->%d\t(%d, %d)\n", pvalue->rect.height, 
		pvalue->rect.width, pvalue->rect.x, pvalue->rect.y);
}


int main()
{
	/* 写数据部分 */
	MyStruct struct_1; 
	struct_1.i = 10;
	struct_1.point = cvPoint(50, 145);
	struct_1.rect = cvRect(2, 2, 400, 400);

	CvFileStorage* fs = cvOpenFileStorage("My_struct.xml", 0, CV_STORAGE_WRITE);

	write_my_struct(fs, "my_struct", &struct_1);
	cvReleaseFileStorage(&fs);

	/* 读数据部分 */
	fs = cvOpenFileStorage("My_struct.xml", NULL, CV_STORAGE_READ );
	MyStruct struct_2;
 	CvFileNode *pnode = cvGetFileNodeByName(fs, NULL, "my_struct");

	read_my_struct( fs, pnode, &struct_2 );

	// 显示
	printf("---------------- Write -----------------\n");
	ShowStructValue( & struct_1 );
	printf("---------------- Read -------------------\n");
	ShowStructValue( & struct_2);

	cvReleaseFileStorage(&fs);

	return 0;
}

相应的XML文件:


运行结果:


《Opencv3编程入门》学习笔记—第八章 《Opencv3编程入门》学习笔记 第八章 图像轮廓与图像分割修复 记录一下在学习《Opencv3编程入门》这本书时遇到的问题或重要的知识点。 阅读详情

相关推荐

新手学习opencv八---道路检测

opencv学习---道路检测

2010yhh 8900

OpenCV练习(2)图像校正

创建一个目标点数组。

PLANTTHESON的博客 2341

opencv第八题:最大池化Max Pooling

import cv2 import numpy as np # max pooling def max_pooling(img, G=8): # Max Pooling out = img.copy() H, W, C = img.shape Nh = int(H / G) Nw = int(W / G) for y in range(Nh): for x in range(Nw): for c in range.

huxw_magus的博客 2493

opencv期末练习题(4)附带解析

这段代码创建了一个黑色画板,支持在画板上通过滑动鼠标画出圆形线条。用户可以按下 'q' 键退出程序,按下 'm' 键切换画图模式,此时在滑动鼠标会在画板上画出圆形线条。这个简单的画板演示了如何使用 OpenCV 处理鼠标事件,根据用户的输入在画板上绘制图形。如果用户按下 'q' 键,则退出程序;如果按下 'm' 键,则切换画图模式。,在函数中根据当前是否处于画图模式以及鼠标事件类型,在画板上画出圆形线条。进入死循环,不断显示当前画板,并等待用户的键盘输入。用于保存左键按下和释放时的坐标,

weixin_45266691的博客 568

从零开始:小鼠Bulk RNA-seq全流程实战指南

本文提供了一份详尽的小鼠Bulk RNA-seq全流程实战指南,涵盖从软件环境搭建、原始数据质控与清洗、序列比对、基因定量到下游差异表达分析与功能富集。内容面向生物信息学新手,通过清晰的代码示例和步骤解析,帮助读者系统掌握Bulk RNA-seq数据分析的核心技能,并产出可靠的生物学洞见。

lake5的博客 715

在Ubuntu 20.04上,用EtherCAT Igh 1.6.2驱动高创BD3E伺服电机(附完整C代码)

本文详细介绍了在Ubuntu 20.04实时内核环境下,使用EtherCAT Igh 1.6.2主站驱动高创BD3E伺服电机的完整实现方案。从实时系统配置、伺服电机PDO映射到精确控制线程设计,提供了完整的C代码样例和实际项目中的调试技巧,帮助开发者实现工业自动化中的高精度运动控制。

weixin_30772105的博客 110

opencv基本练习

opencv的基本使用

qq_43594227的博客 209

企业微信审批流开发避坑指南:从零搭建自定义审批模板(含完整代码)

本文为企业微信审批流开发提供了从零搭建自定义审批模板的完整指南。通过对比内置模板与自建引擎的优劣,详细阐述了利用企业微信开放API和自建应用实现高度灵活审批流程的方案。文章重点解析了前端JS-SDK安全调用、后端签名生成与回调处理的核心代码,并分享了流程引擎设计、安全加固及性能监控等实战经验,帮助企业开发者避开常见陷阱,构建贴合业务的自定义审批系统。

weixin_28358083的博客 966

OpenCV的简单练习

【代码】OpenCV的简单练习。

qq_63603839的博客 1011

新四化浪潮下,中年整车诊断工程师的黄金突围路

摘要 本文探讨了汽车电子诊断工程师在当前行业变革中的独特优势与发展路径。作者作为从业者指出,整车诊断岗位在汽车"新四化"浪潮中呈现"逆生长"特性:技术壁垒高、经验复利强、市场需求持续增长。中年工程师凭借丰富的案例积累和实战经验成为行业稀缺人才,薪资水平显著高于同龄段其他技术岗位。文章分析了四条职业发展路径(技术专家、技术管理、细分深耕、横向拓展),并警示了三大职业风险(执行层局限、技术停滞、成果沉淀不足)。最后提出具体建议,强调掌握UDS高阶、DoIP以太网诊断等核心技术的重要性,为中年技术人提供了清晰的职

Soly_kun的博客 309

记录思科cisco交换机升级iso步骤

Cisco Nexus 93180交换机版本升级

a635161812的博客 4377

《学习OpenCV》练习题第三章第八题b

#include #include #include #pragma comment (lib,"opencv_calib3d231d.lib") #pragma comment (lib,"opencv_contrib231d.lib") #pragma comment (lib,"opencv_core231d.lib") #pragma comment (lib,"opencv_fe

qdsclove的专栏 1215

工业质检升级!C#上位机集成YOLOv8.3.138+Blob分析:尺寸测量+缺陷检测一步到位

工业场景的技术选型,从来不是“选最先进的”,而是“选最适配的”。这个项目的成功,不在于采用了多前沿的技术,而在于找对了“贴合场景的技术组合”和“落地导向的实施思路”。C#上位机的稳定性保障了系统长期运行,YOLOv8.3.138的精度解决了缺陷检测痛点,Blob分析的抗干扰能力确保了尺寸测量准确,三者结合实现了“1+1+1>3”的效果。先摸透场景,再选技术:不要盲目追求最新模型,先深入了解车间环境、生产节奏、精度要求,选择兼容性强、稳定性高的技术方案;数据质量决定模型性能。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 608

《学习OpenCV》练习题第四章第八题ab

这道题是利用OpenCV例子程序里自带的人脸检测程序,做点图像的复制操作以及alpha融合。 说明:人脸检测的程序我参照了网上现有的例子程序,没有用我用的OpenCV版本(2.4.5)的facedetect.c,人脸检测部分是一个月前写的程序,这次做这道理,做了点改动,以前的部分注释了起来。 代码: #include #include #include #inclu

qdsclove的专栏 1512

2023年全国职业院校技能大赛网络系统管理赛项模块A:网络构建(样题4)-网络部分解析-附详细代码

2023年全国职业院校技能大赛网络系统管理赛项模块A:网络构建(样题4)-网络部分解析-附详细代码

bfq05234214的博客 441

SAP GR(Group Reporting)合并报表内容及功能简介(五)-合并和抵消

随着合并和收购数量的显著增加,企业在全球经济中面临着诸多挑战。其中最常见的是法律实体与子公司之间缺乏透明度,导致无法以经济高效的方式对账法律实体与子公司之间的公司间交易,从而造成结算出现重大延迟。公司间匹配和对账功能允许用户在关账过程中进行早期分析,以避免公司间差异,并缩短关账时的延迟。公司间匹配和对账功能交易级别匹配和实时对账基于各种组织维度(如公司、利润中心和合并单位)的灵活建模自动差异解决。应用内通信和工作流。与公司间抵销集成。

weixin_43853754的博客 4400

《学习OpenCV》第八章轮廓课后题

画一个圆,求轮廓,并用矩形逼近,求周长 #include #include #include using namespace std; using namespace cv; #define CVX_RED CV_RGB(0xff, 0x00, 0x00) #define CVX_GREEN CV_RGB(0x00, 0xff, 0x00) #define CVX_BLUE

u011559236的博客 440

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

OpenCV-python验证码识别之猿人学第八题

基于opencv-python的图片验证码识别

a897588006的博客 3073

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

《学习OpenCV》第八章轮廓课后题8.3

用CvSeq的函数创建圆和矩形,这两个图像用点序列来表示。 有关序列的读写方法可以自行学习,这里只给出一个示例 #include #include #include using namespace std; using namespace cv; #define CVX_RED CV_RGB(0xff, 0x00, 0x00) #define CVX_GREEN CV_RGB(0

u011559236的博客 429

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

第八周学习报告(opencv学习)

见第一次接触opencv,所以是从头开始学的。

m0_74071912的博客 208

opencv第八天

它可以被认为是**contour-2的子级**(或者反过来,contour-2是contour-2a的父级)。在这种情况下,我们把外部的称为**父类**,把内部的称为**子类**。好吧,在这里您可以调整直方图的值及其bin值,使其看起来像x,y坐标,以便您可以使用**cv.line**()或cv.polyline()函数绘制它以生成与上述相同的图像。另外,在输出中,我们得到了三个数组,第一个是图像,第二个是轮廓,还有一个我们命名为**hierarchy**的输出(请检查前面文章中的代码)。

m0_58803171的博客 683

Python-opencv学习第八课:键盘响应操作

Python-opencv学习第八课:键盘响应操作 文章目录Python-opencv学习第八课:键盘响应操作一、学习部分二、代码部分1.引入库2.定义按键函数和读入图片并展示,创建window3.设置按键函数4.完整代码三、运行结果总结 一、学习部分 记录笔者学习Python-opencv第八课:键盘响应操作,代码资料来源于网络贾老师视频。 二、代码部分 1.引入库 代码如下: import cv2 as cv import numpy as np 2.定义按键函数和读入图片并展示,创建window

qq_45825952的博客 3036

第八篇【传奇开心果短博文系列】Python的OpenCV技术点案例示例:深度学习

OpenCV深度学习:包括卷积神经网络、循环神经网络等多种深度学习算法的实现。OpenCV是一个开源的计算机视觉库,它提供了丰富的图像处理和计算机视觉算法。深度学习是一种机器学习方法,它模拟人脑神经网络的工作原理,通过多层神经网络来学习和提取数据的特征。在OpenCV中,可以使用深度学习算法来实现各种任务。下面介绍一些常用的深度学习算法及其在OpenCV中的实现:卷积神经网络(Convolutional Neural Network,CNN):CNN是一种专门用于图像处理的深度学习算法。

jackchuanqi的博客 1262

【OpenCV】如何在Linux操作系统下正确安装 OpenCV

本文详细介绍了在Linux操作系统下正确安装OpenCV的步骤和注意事项,包括环境准备、下载安装OpenCV库、配置编译等内容,帮助读者顺利完成安装过程。通过本文,读者可以轻松掌握在Linux系统中安装OpenCV的方法,为后续的图像处理和计算机视觉项目打下坚实基础。

朝花夕拾 1万+

猿人学js逆向比赛第一届第八题

本文探讨了验证码识别的问题,提出通过图像处理和OCR技术结合的解决方案。作者首先使用OpenCV进行图像预处理,包括颜色过滤、二值化和膨胀操作,然后分割出单个字符。尝试了ddddocr和easyocr等现有模型,但识别效果不理想。文章分享了完整的Python处理代码,涉及颜色分析、噪声去除、字符分割等步骤,最终输出处理后的图像和识别结果。虽然当前识别率有待提高,但为验证码识别提供了可行的技术思路和实现方法。

m0_62945506的博客 1011

【OpenCV入门指南】第八篇 灰度直方图

【OpenCV入门指南】第八篇 灰度直方图

hfgyfd的博客 195
上一篇: 《学习OpenCV》练习题第三章第七题
下一篇: 《学习OpenCV》练习题第三章第八题b
Stk_OverFlow
博客等级 码龄14年 27粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值