- 博客(49)
- 资源 (2)
- 收藏
- 关注
原创 第二讲:C#与halcon联合环境配置,halcon代码导出与软件界面搭建
C#与halcon联合环境配置,halcon代码导出与软件界面搭建
2022-07-29 15:01:30
9268
2
原创 C# winform chart 饼状图的使用布局
第一步 添加chart控件一些属性的设置点Legends属性,修改外观属性 点series属性,修改ChartType类型 点击Tiles,属性中的Text就是标题文本,外观中还可以修改标题的大小
2022-07-05 17:25:04
4405
原创 halcon导出库工程流程与问题
halcon的导出分为几种,其中导出库工程适合对一些自己封装的函数。因为后续便于直接的修改。首先封装好自己函数 点击左上角文件,导出库工程,要注意程序集需要在当前封装的函数中。另外一点需要注意的就是需要先给工程命名,否则会报出打开文件失败的错误提示。 将导出文件的中的res文件添加到需要使用项目的bin debug目录下。然后将source中的cs文件添加进项目中打开就行了。还需要添加一个halcon引擎的引用。这样就大功告成了,当你需要修改函数的时候,你只需要打开res中的hdev文件,直接在halco
2022-06-29 15:45:32
1729
原创 C#线程使用详解
1.使用委托发起线程基本的操作,使用线程获取方法返回值的第一种方式 static int Test(int i,string str) { Console.WriteLine("test"+i+str); Thread.Sleep(100);//让当亲线程休眠(暂停线程的执行) 单位ms return 100; } //将Test方法赋值给委托变量a
2022-05-30 20:17:37
2237
原创 winform控件只适应窗口大小
要实现这个功能,选择使用代码,当窗口缩放的时候,控件位置与大小也跟着等比例缩放。将控件存放在Pannl容器中,以方便获取控件。namespace 控件布局的自适应{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } //容器的宽高 public int normWidth, n
2022-05-27 17:28:56
814
原创 C# winform Socket编程,功能齐全
该小程序可以实现多个客户端连接服务器,服务器可以指定发送消息给哪个客户端。连接进来的客户端北储存在combobox控件种,当客户端断开连接时,消息框会显示断开的信息,控件会删除掉断开的客户端信息。服务器端可以发送消息、文件、振动。服务器端using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System
2022-05-27 09:45:40
2687
1
原创 QT 配置halcon 保证百分之百成功 详细保姆教程
下载程序关于QT配置halcon,一个原则就是要使用msvc版本的QT才能成功。博主这里使用的是QT6加vs2019。其他的版本也是一样的,只要QT和vs版本对应就行了。首先下载vs2019 ,下载地址关于安装vs2019,可以看这篇博文,传送门然后就是安装QT6了。关于安装QT6,需要一个QT账户,去QT官网注册一个就行了。详细安装教程可以看这篇博文,需要注意的是,在安装选项的时候,要选择安装QT5 兼容模块,和选择安装msvc2019,安装和下载的,传送门。配置环境两
2021-07-01 16:51:27
6204
16
原创 QT6中QTextcodec头文件找不到
QT6版本已经去除了QTextcodec,需要使用QT5模块来兼容。解决办法在安装QT6的时候,选择安装QT5的兼容部分已经安装好了的可以在控制面板中找到安装程序,然后修改。这是选择修改安装,会增加和删除你安装的一些模块。选择QT5的兼容模块然后再重新打开QT6,在你的项目代码上添加一句代码就可以了...
2021-06-30 16:09:20
19135
11
原创 C++ QT 函数指针,信号重载使用方法
当QT中信号和槽函数发生重载的时候,必须用函数指针来指定要使用的信号和槽函数,这样才不会存在歧义,使用方法如下: //这是有参的调用 void(Teacher:: *teacherSignal)(QString ) = &Teacher::hungry; void(Student:: *studentSlot)(QString ) = &Student::treat; connect(zt,teacherSignal,st,studentSlot);
2021-06-29 14:36:59
459
原创 模板匹配算法原理与实现-opencv
原理模板匹配的原理就是将模板图像在源图像上进行滑动,上下左右的滑动,被模板图像盖住的部分叫做子图像。然后计算模板图像与子图像的相似程度,模板左上角每移动一次计算一次,记录下该像素点的位置和模板与子图的相似分数。详细原理可以参考:https://blog.youkuaiyun.com/qq_42887760/article/details/86563500代码#include <opencv2/opencv.hpp>#include <iostream>#inclu
2021-06-14 14:34:33
3988
1
原创 opencv直方图的处理-均衡化-计算-比较-反向投影
像素重映射map1 和 map2分别代表图片的位置,map1是X轴,map2是Y轴,关于困惑可以参考这篇博文,传送门void update_map(void) { //遍历图片像素 for (int row = 0; row < src.rows; row++) { for (int col = 0; col < src.cols; col++) { switch (index) { case 0://缩小到中间位置 if (col > (src.
2021-06-10 21:34:32
154
1
原创 霍夫变换(直线与圆)-原理与实现
霍夫直线变换关于变换的原理,这篇博文写得非常详细,传送门也可以看这个视频,传送门 Canny(gray_src,dst,50,100,3,false); vector<Vec4f> lines; //定义容器 HoughLines(gray_src, lines, 1, CV_PI / 180, 10, 0, 10);//霍夫变换 for (size_t i = 0; i < lines.size(); i++) { Vec4f h1 = l
2021-06-09 15:20:08
197
转载 sobel算子-Laplace算子-canny算子原理与c++实现-opencv
sobel Mat xgrad, ygrad; Scharr(gray_src, xgrad, CV_16S, 1, 0); Scharr(gray_src, ygrad, CV_16S, 0, 1); // Sobel(gray_src, xgrad, CV_16S, 1, 0, 3); // Sobel(gray_src, ygrad, CV_16S, 0, 1, 3); convertScaleAbs(xgrad, xgrad);//取得绝对值 convertSca
2021-06-08 15:17:32
325
原创 图像边缘填充-opencv-copyMakeBorder用法
在进行卷积操作的时候,我们需要对图像边缘的像素也进行卷积操作,就需要在边缘外在进行填充才行。openCV中默认的处理方法是: BORDER_DEFAULT,此外常用的还有如下几种:- BORDER_CONSTANT – 填充边缘用指定像素值- BORDER_REPLICATE – 填充边缘像素用已知的边缘像素值。- BORDER_WRAP – 用另外一边的像素来补偿填充 int top = (int)(0.05*src.rows); int bottom = (i...
2021-06-08 11:20:46
441
1
原创 opencv 读取图片路径失败,未找到stl.cpp,读取字符串失败,字符路径前被自动加上?
这个问题搞了我一个小时,其他常规的解决方案都试过了,库文件这些配置是正确的,也尝试修改了编码,还是读取路径失败。调试进入base.cpp发现字符串被自动加上了?,未找到stl.cpp解决方案:引入using namespace std然后把路径放在定义的字符串变量中imagepath = "C:\\Users\\52505\\Desktop\\1.png"src = imread(imagepath );运行成功,读取到图片...
2021-06-08 10:05:55
375
原创 双边滤波原理详解-c++实现-opencv
bilateral filter双边滤波器的通俗理解图像去噪的方法很多,如中值滤波,高斯滤波,维纳滤波等等。但这些降噪方法容易模糊图片的边缘细节,对于高频细节的保护效果并不明显。相比较而言,bilateral filter双边滤波器可以很好的边缘保护,即可以在去噪的同时,保护图像的边缘特性。双边滤波(Bilateral filter)是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折衷处理,同时考虑空域信息和灰度相似性,达到保边去噪的目的(不理解这几个概念没关系,后面会慢慢解释)...
2021-06-07 18:19:19
279
原创 图像金字塔原理与C++实现
原理高斯图像金字塔分为上采样和下采样两种上采样:就是放大图片,先将图像在每个方向放大为原来的两倍,新增的行和列用0填充,再使用先前同样的内核与放大后的图像卷积,获得新增像素的近似值。下采样:先对图像进行高斯内核卷积 ,再将所有偶数行和列去除。代码c++调用opencv模块进行实现 // 上采样 pyrUp(src, dst, Size(src.cols*2, src.rows * 2)); imshow(OUTPUT_WIN, dst); // 降采样 Mat s_d
2021-06-07 18:14:35
800
原创 图像二值化和灰度形态学与操作
灰度腐蚀与膨胀示例代码#include <opencv2/opencv.hpp> #include <iostream> using namespace cv;Mat src, dst;char OUTPUT_WIN[] = "output image";int element_size = 3;int max_size = 21;void CallBack_Demo(int, void*);int main(int argc, char** argv
2021-06-07 17:41:08
341
原创 opencv-图像混合-图像模糊
图像混合addweightedaddWeighted(src1, alpha, src2, (1.0 - alpha), 0.0, dst);均值滤波point(-1,-1)表示锚点位于中心高斯模糊高斯双边滤波传送门,写的非常详细。
2021-06-07 16:43:47
124
原创 图像反转-灰度化-c++底层实现-opencv
彩色图像直接灰度化+底层灰度化实现#include<iostream>#include<math.h>using namespace std;using namespace cv;int main(int argc, char** argv){ Mat gray,dst; Mat src = imread("22.jpg"); namedWindow("Window Title", WINDOW_NORMAL); if (src.empty()) { c
2021-06-06 17:55:30
420
1
原创 图像处理--图像卷积c++底层实现--opencv模块
目录配置原理知识卷积核底层代码使用封装的代码配置关于配置vs2019 的opencv 环境,可以参考这篇博文,传送门。原理知识关于图像做卷积的原理知识,因为知识很基本就不写了,可以参考这篇博文,传送门卷积核底层代码#include<opencv2\opencv.hpp>#include<highgui.h>#include<iostream>#include<math.h>using nam.
2021-06-06 16:01:13
602
原创 C#操作mysql 实现增删改查
数据库中的表中数据如下//connStr连接数据库的登录信息 string connStr = "server = localhost; user = root; database = test; port = 3306; password = 5250"; //创建连接数据库的对象 MySqlConnection conn = new MySqlConnection(connStr); try
2021-06-02 21:06:36
747
原创 C# 操作数据库 实现增删改查 绑定datagridview
目录引言准备界面设计代码设计演示结果如有帮助,请点赞,谢谢。引言上一周花了几天时间学习了mysql数据库的基础部分,今天学习了C#调用mysql数据库,做个简单的笔记,因为看到博客上的入门文章质量并不算高,那就我来写一个吧。该小项目可以实现对数据库可视化,并进行增删改查同步到数据库中。准备开始之前,需要先添加MySql.Data引用在using把MySql.Data,MySql.Data.MySqlClient,System.Data三个命名空间包括.
2021-06-02 19:56:46
3484
原创 error 1366<HY000>: Incorrect string value: mysql数据库字符显示问题
该问题是在mysql数据库,涉及到字符时出现的问题,主要原因是编码格式的问题。将其改成gbk格式就好了.在命令行输入:use names gbk;
2021-06-01 17:55:50
134
原创 各种排序算法c#实现
目录直接插入排序冒泡排序简单选择排序快速排序直接插入排序插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。 static void InsertSort(int[] dataArray) { for (int i = 1; i < dataArray.Length; i++) .
2021-05-27 11:35:51
188
1
原创 C#栈-队列
目录栈队列栈栈(Stack)是操作限定在表的尾端进行的线性表。表尾由于要进行插入、删除等操作,所以,它具有特殊的含义,把表尾称为栈顶( Top),另一端是固定的,叫栈底( Bottom)。当栈中没有数据元素时叫空栈(Empty Stack)。C#2.0 提供了泛型的Stack<T>类重要的方法如下Push()入栈(添加数据) Pop()出栈(删除数据,返回被删除的数据) Peek()取得栈顶的数据,不删除 Clear()清空所有数.
2021-05-26 17:12:34
247
原创 C#数据结构-顺序表和单链表
顺序表在计算机内,保存线性表最简单、最自然的方式,就是把表中的元素一个接一个地放进顺序的存储单元,这就是线性表的顺序存储(Sequence Storage)。线性表的顺序存储是指在内存中用一块地址连续的空间依次存放线性表的数据元素,用这种方式存储的线性表叫顺序表(Sequence List),如图所示。顺序表的特点是表中相邻的数据元素在内存中存储位置也相邻顺序表实现首先创建一个接口用来存储需要实现的方法 interface IListDS<T> {
2021-05-26 14:02:58
259
原创 C# 操作EXCL表格
目录表格信息代码表格信息代码 string fileName = "装备信息.xls"; //固定字符串 string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + fileName + ";" + ";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\""; .
2021-05-26 09:31:38
250
原创 C# json操作
json语法规则使用json来存放类的信息,比较方便,因为它可以使用泛型类自动转换文档获取信息,不同于XML 数据在键值对中 数据由逗号分隔 花括号保存对象 方括号保存数组JSON 名称/值对JSON 数据的书写格式是:名称/值对。名称/值对组合中的名称写在前面(在双引号中),值对写在后面(同样在双引号中),中间用冒号隔开:"firstName":"John"JSON 值可以是:数字(整数或浮点数),字符串(在双引号中),逻辑值(true 或 fa...
2021-05-25 17:06:55
1146
1
原创 C# XML文档基本操作
目录XML文档内容接收信息的类读取xml代码XML文档内容实现把xml文档中的信息通过代码读取到类中接收信息的类 class Skill { public int Id { get; set; } public string Name { get; set; } public string EngName { get; set; } public int TriggerType { get; s.
2021-05-25 15:24:17
188
1
原创 C#文件操作信息
目录文件操作FileInfo文件夹操作DirectoryInfoFile读写文件FileStream读写文件StreamReader和StreamWriter读写文本文件文件操作FileInfo //相对路径:就是找当前程序所在的路径 FileInfo fileInfo = new FileInfo("TextFile1.txt"); //绝对路径:加上文件完整的路径名 FileInf.
2021-05-25 14:20:58
281
原创 c# TCP通讯 使用TcpClient和TcpListener
TCP通讯TcpClient和TcpListener两个类都对socket进行了封装,使得代码写起来更加的简洁。服务器端using System;using System.Collections.Generic;using System.Linq;using System.Net;using System.Net.Sockets;using System.Runtime.InteropServices;using System.Text;using System.Threadin
2021-05-25 10:28:45
816
2
原创 C# udp通讯
目录UDP常规通讯服务器端客户端udpclient类通讯服务器端客户端UDP常规通讯udp和tcp通讯的最大差异就在于udp通讯不需要二者建立连接服务器绑定好ip和端口号,客户端发信息时直接指定ip和端口发送即可。服务器端using System;using System.Collections.Generic;using System.Linq;using System.Net;using System.Net.Sockets;using Sy.
2021-05-25 10:24:01
1097
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人