GTK+2.0编程范例代码分析-第一章(3)

Gtk-ERROR : GTK+ 2.x symbols detected. Using GTK+2.x and GTK+3 in the same process is not support Gtk-ERROR **: GTK+ 2.x symbols detected. Using GTK+ 2.x and GTK+3 in the same process is not support报错:形式1:形式2:原因报错的一般复现解决方案参考文献 程序员遇到这种环境问题的时候前列腺都不好, 记录一下, 方便以后回查~ 报错: 报错有两种形式 形式1: Gtk-ERROR **: GTK+ 2.x symbols detected. Using GTK+ 2.x and GTK+3 in the 阅读详情

转载请注明:http://blog.youkuaiyun.com/hubbybob1/article/details/49429067
本文主要是针对 GTK+2.0编程范例–宋国伟老师的书内的代码做一些注释,兼并讨论一下GTK+3.0与2.0的区别.其安装,在网上有很多讲解.
查看各个函数的的说明,就得看说明文档,下面这个网址很好,是GTK+3.0API的目录:
https://developer.gnome.org/gtk3/stable/
或者下载我上传的3.0说明文档,查看:
http://download.youkuaiyun.com/detail/hubbybob1/9219553

1.7方像按钮
其程序arrow.c如下:

/*方向按钮 arrow.c */
#include <gtk/gtk.h>
#define switch    //开关,两种方法的开关

//创建方向按钮
GtkWidget* create_arrow_button(GtkArrowType arrowtype,GtkShadowType shadowtype)
{
/************************************************************************/
//传统的方向按钮,定义开关switch,会执行
#ifdef switch
    GtkWidget* arrow;//方向
    GtkWidget* button;//按钮
    button = gtk_button_new();//创建按钮
//创建箭头控件,参数为方向和阴影
//箭头的类型GtkArrorType为:GTK_ARROW_UP↑,GTK_ARROW_DOWN↓,GTK_ARROW_RIGHT→,GTK_ARROW_LEFT←
//阴影的类型GtkShadowType为:GTK_SHADOW_NONE无阴影,GTK_SHADOW_IN阴影内向,GTK_SHADOW_OUT阴影外向,
//                          GTK_SHADOW_ETCHED_IN,阴影向内凹进,GTK_SHADOW_IN阴影向外凸进
    arrow = gtk_arrow_new(arrowtype,shadowtype);
    gtk_container_add(GTK_CONTAINER(button),arrow);//arrow控件是button的一个属性
    gtk_widget_show(arrow);
/************************************************************************************************/  

/************************************************************************************************/  
//新的方创建的方向按钮,当未定义switch时,就会执行
#else
    GtkWidget* box;
    GtkWidget* image;//图像控件
    GtkWidget* label;
    GtkWidget* button;

if( arrowtype == GTK_ARROW_UP)
    image = gtk_image_new_from_file("up2.png");//创建图像控件

if( arrowtype == GTK_ARROW_DOWN)
    image = gtk_image_new_from_file("down 2.png");//创建图像控件

if( arrowtype == GTK_ARROW_RIGHT)
    image = gtk_image_new_from_file("right 2.png");//创建图像控件

if( arrowtype == GTK_ARROW_LEFT)
    image = gtk_image_new_from_file("left2.png");//创建图像控件

    box = gtk_vbox_new(FALSE,2);//创建纵向盒装容器
    gtk_container_set_border_width(GTK_CONTAINER(box),5);//设置容器的的边界宽度

    gtk_box_pack_start(GTK_BOX(box),image,FALSE,FALSE,3);//把图像控件绑定到盒装容器内
    gtk_box_pack_start(GTK_BOX(box),label,FALSE,FALSE,3);//把标签控件绑定到盒状容器内

    gtk_widget_show(image);//显示图片
    gtk_widget_show(label);//显示标签

    button = gtk_button_new();//创建按钮
    gtk_container_add(GTK_CONTAINER(button),box);//把按钮放到盒装容器内
    gtk_widget_show(box);//显示盒状容器
#endif  
/****************************************************************************************/

return button;
}

int main( int argc,char *argv[])
 {
  GtkWidget* window;
  GtkWidget* box;
  GtkWidget* arrow1;
  GtkWidget* arrow2;
  GtkWidget* arrow3;
  GtkWidget* arrow4;
  char* title="方向按钮";
  gtk_init(&argc,&argv);
//创建窗口
  window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  gtk_window_set_title(GTK_WINDOW(window),title);
  gtk_container_set_border_width(GTK_CONTAINER(window),20);
  g_signal_connect(G_OBJECT(window),"destroy",G_CALLBACK(gtk_main_quit),NULL);
//创建横向盒状容器
  box = gtk_hbox_new(FALSE,0);
  gtk_container_add(GTK_CONTAINER(window),box);
  gtk_widget_show(box);
//创建左按钮 
  arrow1 = create_arrow_button(GTK_ARROW_LEFT,GTK_SHADOW_IN);
  gtk_box_pack_start(GTK_BOX(box),arrow1,FALSE,FALSE,13);
  gtk_widget_show(arrow1);
//创建上按钮
  arrow2=create_arrow_button(GTK_ARROW_UP,GTK_SHADOW_IN);
  gtk_box_pack_start(GTK_BOX(box),arrow2,FALSE,FALSE,13);
  gtk_widget_show(arrow2);
//创建先按钮
  arrow3=create_arrow_button(GTK_ARROW_DOWN,GTK_SHADOW_IN);
  gtk_box_pack_start(GTK_BOX(box),arrow3,FALSE,FALSE,13);
  gtk_widget_show(arrow3);
//创建右按钮
  arrow4=create_arrow_button(GTK_ARROW_RIGHT,GTK_SHADOW_IN);
  gtk_box_pack_start(GTK_BOX(box),arrow4,FALSE,FALSE,13);
  gtk_widget_show(arrow4);

  gtk_widget_show(window);
  gtk_main();
  return FALSE;
 }
//Makefile文件
CC = gcc
all:
    $(CC) -o arrow arrow.c `pkg-config --cflags --libs gtk+-3.0`

当switch被定义时,其运行结果如下:
这里写图片描述
这个方法固然好,但是显得简单多了,那么采用上一节的方法的呢,会是怎样的一个效果,那就注释掉上面代码的第三行:
“#define switch “,运行的结果如下:
方案1:
这里写图片描述
方案2:
这里写图片描述
可见这两种方案是很华丽的,如果有兴趣的话,可以按照上一节的方法,把窗口的背景改了,拿就会更华丽了:
http://blog.youkuaiyun.com/hubbybob1/article/details/49248165

下面来讲一下3.0与2.0 的区别,当把makefile中的gtk版本改为3.0时就会报警为:
这里写图片描述
就是说在3.0中建议使用gtk_box_new代替gtk_vbox_new,那么来查看一下,打开你下载的gtk3.0资源找到GtkBox.html,并打开
这里写图片描述
这里写图片描述
可以找到gtk_box_new,点进去就会看到这个函数的用法了:
这里写图片描述
进一步去看他的参数:
这里写图片描述
使用方法到此位置,有兴趣的话可以字修改一下看看.

1.8创建不同样式的标签
其函数说明文档可查看:gtk3-html-3.18.2/GtkLabel.html
其实前面已经多处使用到了标签这个控件,代码lable.c如下:

/*多种样式的标签 label.c*/

#include<gtk/gtk.h>
int main(int argc,char*argv[])
{
    GtkWidget* window;
    GtkWidget* box;
//定义四个标签    
        GtkWidget* label1;
    GtkWidget* label2;
    GtkWidget* label3;
    GtkWidget* label4;
//定义四个框架    
        GtkWidget* frame1;
    GtkWidget* frame2;
    GtkWidget* frame3;
    GtkWidget* frame4;
    gchar* title;

    gtk_init(&argc,&argv);
//创建窗口,带边框,标题"多样式的标签",边宽20
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(window),"多样式的标签");
    g_signal_connect(G_OBJECT(window),"destroy",G_CALLBACK(gtk_main_quit),NULL);
    gtk_container_set_border_width(GTK_CONTAINER(window),20);
//创建纵向盒状容器,不均匀排列(有大有小)
    box = gtk_vbox_new(FALSE,0);
    gtk_container_add(GTK_CONTAINER(window),box);
//创建标签一:
    frame1 = gtk_frame_new("标签一");
        label1 = gtk_label_new("这是第一个标签,居左的.This is the first label.");
    gtk_container_add(GTK_CONTAINER(frame1),label1);
    //gtk_label_set_justify:设置标签的对其方式:
    //GTK_JUSTIFY_LEFT   左对齐
    //GTK_JUSTIFY_RIGHT  右对齐
    //GTK_JUSTIFY_CENTER 居中
        //GTK_JUSTIFY_FILL   均匀分布        
    gtk_label_set_justify(GTK_LABEL(label1),GTK_JUSTIFY_LEFT);//左对齐
    gtk_box_pack_start(GTK_BOX(box),frame1,FALSE,FALSE,5);//在box内从前到后依次排列,不扩展,不填充,与上一控件间隔为5
//创建标签二:    
        frame2 = gtk_frame_new("标签二");
    label2 = gtk_label_new("这是第二个标签。它是多行的.\n这还是第二个标签的内容,它是居右的");
    gtk_container_add(GTK_CONTAINER(frame2),label2);
    gtk_label_set_justify(GTK_LABEL(label2),GTK_JUSTIFY_RIGHT);//右对齐
    gtk_box_pack_start(GTK_BOX(box),frame2,FALSE,FALSE,5);
//创建标签三:    
        frame3 = gtk_frame_new("标签三");
    label3 = gtk_label_new(NULL);
  //title是格式化文本,可以设置字体的大小颜色,和字体
  //开头和结尾<span 整体设置项>  *****  </span >
  //在整体设置中<span 整体设置项>  可以为:"<span foreground =\"red\">前景红色,"<span background =\"blue\">背景蓝色
  //斜体的开头结尾 <i>*********</i>表示中间这一段是斜体,<b>******</b> 粗体
    title = "<span foreground =\"red\"><big><i>这是第三个标签,\n它被格式化成红色的了,且字体也大了。</i></big></span>";
    gtk_label_set_markup(GTK_LABEL(label3),title);//格式化标签文本
    gtk_container_add(GTK_CONTAINER(frame3),label3);
    gtk_box_pack_start(GTK_BOX(box),frame3,FALSE,FALSE,5);
//创建标签四
    frame4 = gtk_frame_new("标签四");
    label4 = gtk_label_new("这也是个多行标签,它的换行方式与上一个有所不同,主要是编程手段不一样,请详细查看一下源码就会明白是怎么一回事。");
    gtk_container_add(GTK_CONTAINER(frame4),label4);
    gtk_label_set_line_wrap(GTK_LABEL(label4),TRUE);//设置自动换行
    gtk_box_pack_start(GTK_BOX(box),frame4,FALSE,FALSE,0);

    gtk_widget_show_all(window);
    gtk_main();
    return FALSE;
}//makefile
CC = gcc
all:
    $(CC) -o label label.c `pkg-config --cflags --libs gtk+-3.0`

这里写图片描述
如图所示为3.0,但要是2.0,会使怎样呢如下,自己看他们的区别吧:
这里写图片描述

1.9 Splash 窗口
其代码splash.c如下:

/*创建SPLASH窗口 splash.c */
#include<gtk/gtk.h>
int main(int argc,char* argv[])
{
    GtkWidget* window;
    GtkWidget* vbox;
    GtkWidget* image;
    GtkWidget* button;

    gtk_init(&argc,&argv);
//创建创建窗口splash,为了显示LOGO,在运行时,永远处在顶层
    window = gtk_window_new(GTK_WINDOW_POPUP);//无外框窗口
    gtk_window_set_title(GTK_WINDOW(window),"Splash 窗口");
    g_signal_connect(G_OBJECT(window),"destroy",G_CALLBACK(gtk_main_quit),NULL);
    gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
//创建Vbox
    vbox = gtk_vbox_new(FALSE,0);
    gtk_container_add(GTK_CONTAINER(window),vbox);
//显示LOGO
    image = gtk_image_new_from_file("Lancoo.jpg");
    gtk_box_pack_start(GTK_BOX(vbox),image,FALSE,FALSE,0);

    button = gtk_button_new_with_label("关闭Splash窗口");
    g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(gtk_main_quit),NULL);

    gtk_box_pack_start(GTK_BOX(vbox),button,FALSE,FALSE,0);

    gtk_widget_show_all(window);
    gtk_main();

    return FALSE;
}//makefile
CC = gcc
all:
    $(CC) -o splash splash.c `pkg-config --cflags --libs gtk+-3.0`

运行的结果如下:
这里写图片描述
到此第一章的内容就写完了

Win64 GTK+3编程【2】GTK+3完… 软件和包下载步骤: 首先是开发环境,选用Dev-cpp 5.11,下载地址:http://sourceforge.net/projects/orwelldevcpp/ 其次是GTK+3的打包文件,这里选择其首页的下载页的win64 bit页面,下载地址:all-in-one bundle   首先安装dev-cpp,安装过程跟以前一样。基本不需要什么繁琐的配置,第一次运行的时候会让用户选择主 阅读详情

相关推荐

Windows 11 安装GTK+3.0 和VScode开发GTK+3.0配置

windows11安装GTK+3.0及在VScode配置GTK+3.0开发环境,验证调试及运行GTK+3.0程序。

weixin_41738640的博客 1960

如何使用GTK让系统显示托盘图标

使用下面的演示代码时,注意图标的路径,否则不能显示托盘图标。如果编译不成功,请注意编译命令中的字符是否是英文的字符。 介绍: 这篇文章解释了GtkStatusIcon部件的使用,这个GtkStatusIcon部件用来在系统托盘里放置图标。为了和用户交互提示条和弹出菜单可以加入到这个图标里。这个图标也可以闪烁。 如何在系统托盘里放置图标: 下列函数可以用来创建一个

hushiwei1993的专栏 3754

Windows下通过Dev-C++配置GTK+3.0编程环境

目前本人在学习linux下的GTK+3.0,编好的程序很想移植到windows上使用,所以就到网上搜索了大量文章,其中VS2015和GTK+3.0组合方式始终无法调试成功,后来发现Dev-C++和GTK+3.0的组合方式勉强能用,现将细节说一下:一、软件准备 (一)使用系统windows7 64位。 (二)下载Dev-C++5.11,搜索官网https://dev-c.soft32.com/fre...

qq_43037374的博客 3933

GTK+2.0编程范例代码分析-第一章(1)

转载请注明:http://blog.csdn.net/hubbybob1/article/details/49159581 本文主要是针对 –GTK+2.0编程范例–宋国伟老师的书内的代码做一些注释,兼并讨论一下GTK+3.0与2.0的区别.其安装,在网上有很多讲解. 第1章 窗口与简单控件1.1最简单的窗口 程序如下base.c/*simple windows_base.c*/ #incl

hubbybob1专栏 1472

OpenCV ERROE **: 02:07:27.741:GTK+ 2.x symbols detected. Using GTK+ 2.x and GTK+ 3 in the ...

OPENCV ERROE **: 02:07:27.741:GTK+ 2.x symbols detected. Using GTK+ 2.x and GTK+ 3 in the same process is not supported Ubuntu 和 cmake 环境下,使用opencv时报错 ERROE **: 02:07:27.741:GTK+ 2.x symbols det...

Keeplearning 2235

GTK+3.0加Glade3 编程时可能遇到的问题详解

LZ在写作业时,自己切身遇到的问题以及最终经过研究得出的解决方案。 所做实验的代码test.c如下: #include void on_mainLoginWindow_destroy(){ } int main(int argc, char *argv[]) {     GtkBuilder *builder;     GtkWidget *window;     g

luan111111的专栏 2776

GTK+2.0编程范例代码分析-第二章(1)

转载请注明:http://blog.csdn.net/hubbybob1/article/details/49466979 本文主要是针对 GTK+2.0编程范例–宋国伟老师的书内的代码做一些注释,兼并讨论一下GTK+3.0与2.0的区别.其安装,在网上有很多讲解. 查看各个函数的的说明,就得看说明文档,下面这个网址很好,是GTK+3.0API的目录: https://developer.gn

hubbybob1专栏 2675

gtk+3.0 windows配置

下载gtk+3.0,解压到d盘根目录 http://www.gtk.org/download/index.php D:\gtk3\bin 添加到环境变量 pkg-config --libs --cflags gtk+-3.0 输出: -mms-bitfields -ID:/gtk3/include/gtk-3.0 -ID:/gtk3/include/cairo -ID:/gt

HFHHXH的专栏 3003

GTK+3.0相较与GTK+2.0下创建盒的变化

在学习使用Glade软件创建盒的过程中,发现GTK+3.0已经取消了gtk_hbox_new()和gtk_vbox_new(),只需要在常规选项里面修改横向和垂直即可。但为了弄懂GTK+3.0与GTK+3.0的不同,还是查阅了一些资源,主要区别如下: 一、GTK+2.0 横向盒gtk_hbox_new(gboolean homogeneous,gint spacing); 纵向盒gtk_vb...

qq_43037374的博客 2359

GTK+编程入门(2)—GTK+程序结构

GTK+编程入门(2)—GTK+程序结构(2015-7-23)分类:GTK+  现在是晚上,快到睡觉时间了。把这小节完整看完是不可能了,索性就先开个头。这节的内容是通过一个最简单的GTK+程序的分析来了解GTK+程序的基本结构。   该程序如下所示:#include <gtk/gtk.h> int main(int argc, char *argv[]) { //声明一个窗口构件

LazyBone1994的博客 1863

GTK+2.0 中文版(基于GNOME官方文档翻译)

GTK+ 2.0 教程 译者: huzheng,konghui,ferry,carton,yang_yi,ddd,tingle 版本号: V_0.1.0 2002年 6 月25 日 本文是有关通过 C 语言接口使用 GTK (the GIMP Toolkit) 的教程。 Table of Contents 中文版说明 简介 从这里开始 用 GTK 来写 Hello World 编译 Hello World 程序 信号和回调函数的原理 事件 Hello World 详解 继续 数据类型 深入探索信号处理函数 改进了的 Hello World 组装构件 组装盒的原理 盒的细节 组装示范程序 用表组装 表组装示例 构件概述 类型转换 构件的组织 无窗口构件 按钮构件 一般按钮 Normal Buttons 开关按钮 Toggle Buttons 复选按钮 Check Buttons 单选按钮 Radio Buttons 调整对象 Adjustments 创建一个调整对象 轻松使用调整对象 “调整对象”的内部机制 范围构件 Range Widgets 滚动条构件 Scrollbar Widgets 比例构件 Scale Widgets 创建一个比例构件 函数和信号(至少讲了函数) 常用的范围函数 设置更新方式 获得和设置调整对象 键盘和鼠标绑定 示例 杂项构件 标签 Labels 箭头 Arrows 工具提示对象 The Tooltips Object 进度条 Progress Bars 对话框 Dialogs 标尺 Rulers 状态栏 Statusbars 文本输入构件 Text Entries 微调按钮 Spin Buttons 组合框 Combo Box 日历 Calendar 颜色选择 Color Selection 文件选择 File Selections 容器构件 Container Widgets 事件盒 The EventBox 对齐构件 The Alignment widget 固定容器 Fixed Container 布局容器 Layout Container 框架 Frames 比例框架 Aspect Frames 分栏窗口构件 Paned Window Widgets 视角 Viewports 滚动窗口 Scrolled Windows 按钮盒 Button Boxes 工具栏 Toolbar 笔记本 Notebooks 菜单构件 手工创建菜单 手工菜单示例 使用套件 套件示例 无文档构件 快捷标签 Accel Label 选项菜单 Option Menu 菜单项 Menu Items 复选菜单项 Check Menu Item 单选菜单项 Radio Menu Item 分隔菜单项 Separator Menu Item 分离菜单项 Tearoff Menu Item 曲线图 Curves 绘图区 Drawing Area 字体选择对话框 Font Selection Dialog 消息对话框 Message Dialog Gamma 曲线图 图像 Image 插头和插座 Plugs and Sockets 树视区 Tree View 文本视区 Text View 设置构件的属性 超时、IO 和 Idle 函数 超时 Timeouts 监控IO Idle 函数 高级事件和信号处理 信号函数 连接和断开信号处理函数 阻塞和反阻塞信号处理函数 发出和停止信号 信号的发射和传播 操作选中区 概述 获取选中区信息 提供选中区 拖放 概述 属性 函数 设置源构件 源构件上的信号 设置目的构件 目的构件上的信号 GLib 定义 双向链表 单向链表 存储管理 计时器 字符串处理 实用程序和错误处理函数 GTK 的 rc 文件 rc 文件的功能 GTK rc 文件的格式 rc 文件示例 编写你自己的构件 概述 一个构件的剖析 创建一个复合构件 介绍 选择一个父类 头文件 _get_type() 函数 _class_init() 函数 _init() 函数 其余的... 从头创建构件 介绍 在屏幕上显示构件 表盘构件的原形 主体 gtk_dial_realize() 大小磋商 gtk_dial_expose() 事件处理 可能的增强 深入的学习 涂鸦板,一个简单的绘图程序 概述 事件处理 绘图区构件和绘图 添加XInput支持 允许扩展设备信息 使用扩展设备信息 得到更多关于设备的信息 进一步的讲解 编写 GTK 应用程序的技巧 投稿 鸣谢 教程的版权和许可声明

GTK+2.0编程范例代码分析-第一章(2)

转载请注明:http://blog.csdn.net/hubbybob1/article/details/49248165 本文主要是针对 –GTK+2.0编程范例–宋国伟老师的书内的代码做一些注释,兼并讨论一下GTK+3.0与2.0的区别.其安装,在网上有很多讲解. 1.6带图像和快捷键的按钮 这一节是第四小结的延续,在源程序的基础上给窗口接一个背景,需要添加一个layout控件:程序如下:/

hubbybob1专栏 1361

GTK+编程详细学习教程

通过本书学习你会对gtk编程有一个详细的了解 里面详细介绍了glib等gtk编程知识 不错的一本书,强力推荐大家看一看

GTK+-2.0 的安装

声明:本文是自己昨天安装GTK+-2.0的经历,完全是安装下面步骤来的,现记录下来,方便以后查看。 本机系统是Ubuntu10.04。vim&gcc&gdb&make&kg-config等基本编程工具都已经安装完毕。 Ubuntu 上开发gtk+2.0的程序,需要安装相应的头文件和库。 1、在控制台窗口输入sudo apt-get install libgtk2.0*,

嵌入式学习交流平台 7815

GTK+-2.0-中文手册.pdf.7z

GTK+_2.0_中文手册.pdf.7z

海思Hi3516CV610开发实战:在Ubuntu 22.04上从零构建嵌入式Linux开发环境

本文详细介绍了在Ubuntu 22.04上为海思Hi3516CV610开发板搭建嵌入式Linux开发环境的完整流程。从虚拟机配置、系统安装到基础环境设置,提供了实用技巧和常见问题解决方案,帮助开发者高效构建适用于智能视觉处理的开发环境。

weixin_29197699的博客 510

解决GTK+版本冲突:从GTK+2.x到GTK+3的平滑迁移指南

本文详细解析了Linux环境下Python程序常见的GTK+版本冲突问题,特别是GTK+2.x与GTK+3在同一进程中不兼容导致的报错。文章提供了四种有效的解决方案:修改Matplotlib后端配置、调整OpenCV版本、从源码编译OpenCV以及使用虚拟环境隔离依赖,并给出了具体的诊断步骤和避坑指南,帮助开发者实现平滑迁移。

algae的博客 570

Ubuntu 24.04 LTS安装WPS Office 2025冬季版全攻略(附字体缺失解决方案)

本文提供了在Ubuntu 24.04 LTS系统上安装WPS Office 2025冬季版的完整指南,详细对比了dpkg、Snap和GUI三种安装方式的优劣。针对安装后常见的中文字体缺失、思源黑体粗细异常等核心问题,给出了从原理分析到手动补充字体库、修改字体配置文件的深度解决方案,确保WPS Office在Linux环境下获得最佳使用体验。

weixin_29284201的博客 620

GTK+2.0编程范例代码分析-第二章(2)

转载请注明:http://blog.csdn.net/hubbybob1/article/details/50034387 本文主要是针对 GTK+2.0编程范例–宋国伟老师的书内的代码做一些注释,兼并讨论一下GTK+3.0与2.0的区别.其安装,在网上有很多讲解. 查看各个函数的的说明,就得看说明文档,下面这个网址很好,是GTK+3.0API的目录: https://developer.

hubbybob1专栏 1033

AVM环视:系统搭建整体流程

文章目录前言一、畸变矫正鱼眼相机二、透视变换三、图像拼接四、图像融合总结 前言 由于正在做AVM环视,所以记录一下整个过程,归纳为一个系列文章,并对期间遇到的错误进行归纳整理。本文主要概括了AVM环视的大致流程和逻辑,不涉及代码部分,仅供思路参考,其中涉及的具体技术会在后期整理为小章节进行分析。 一、畸变矫正 鱼眼相机 做环视基本上使用到的是鱼眼照片,因为鱼眼相机的视角范围可以达到220°到230°,所以一个相机就可以采集到一个面的全部信息,例如汽车具有四个面,那么在汽车的前后左右分别安装一个鱼眼相机.

qq_34468890的博客 6536

FPGA时序分析中的工艺角:从PVT原理到建立保持时间验证

在数字电路设计中,静态时序分析(STA)是确保芯片功能正确和性能达标的核心验证手段。其基本原理是通过计算信号在逻辑路径上的传播延迟,检查建立时间和保持时间是否满足寄存器采样要求。这项技术的核心价值在于,它能在芯片制造前就预测并消除时序违规,极大提高设计成功率。然而,实际芯片性能会受到工艺波动、电压变化和温度漂移(合称PVT)的显著影响。为了覆盖这些不确定性,时序分析必须采用基于工艺角的边界模型——用最慢的工艺角模型验证建立时间,用最快的工艺角模型验证保持时间。这种分析方法广泛应用于FPGA和ASIC设计流程

weixin_30181209的博客 199
上一篇: GTK+2.0编程范例代码分析-第一章(2)
下一篇: GTK+2.0编程范例代码分析-第二章(1)
葫芦娃二娃
博客等级 码龄15年 1850粉丝 69原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值