C ,OpenCV2.4,cmake,vs2015
YH_24H
学无止境!!---时间太短,要求挺多,速学速用,速用速忘,忘了再学。所以笔记很重要。
展开
-
python 向c语言程序传递数组作为参数
python的for循环效率极低,计算速度也慢,比c/c++就慢多了,就a[i]+a[i+1]*256这个公式循环3万词都得接近700ms,不会其他办法,只有放在c里计算然后返回结果了下面的代码给个10个值的demo。(博主遇到的问题用了其他方法解决)c语言中代码,编译成Ctype.dll了float *trans_image_test(int raw_data[]){ static float image_8bit[10]; for (int j = 0; j<10; j = j + 2原创 2020-08-27 21:44:09 · 1843 阅读 · 0 评论 -
封装动态库,python取C库返回int数组指针指向的数据
dll中代码,C语言int* get_image8(SI_H* g_hDevice){clock_t start, end;static int image_8bit[143360]; //此处应该定义局部变量为静态变量 ,不然清除栈区就变成垃圾了//不初始化为static有时候也能用,但是我觉得不太安全,毕竟static是放在内存里全局变量一起的······部分初始化代码 start = clock();//和下面的end配合得到代码块时间花销 for (int n = 0; n <原创 2020-08-21 16:28:31 · 1603 阅读 · 1 评论 -
python下字节流数据转化为numpy数组
python下字节流数据转化为numpy数组python下字节流数据不太方便处理,一般转为numpy数组。以下代码的目的是将相邻两个字节的值求和(16位图)。数据数据原型,相机,网页,图片,串口都可能用到这种数据这里用到的数据长度是3万足有b'\xd7\x00\xd8\x00\xda\x00\xd9\x00\xd8\x00······'方法一通过.raw获得int型值,然后将两个位的数据加起来 begin = time() data = [] for i in range(原创 2020-08-20 21:50:46 · 5562 阅读 · 0 评论 -
create_string_buffer/Ctypes传参缓冲区地址/数组
create_string_bufferPython的string是不可修改的,所以不能传递string到一个 C/C++函数去改变它的内容,所以需要使用create_string_buffer再python里通过ctypes给指针类型的对象c_char_p,c_wchar_p 和c_void_p 等赋值时,将改变它们所指向的内存地址,这和c/c++大不相同,c/c++是修改它们所指向的内存区域的内容,这是因为python的byte对象是不可以修改的.如果你需要可改变的内存块,ctypes提供了 cre原创 2020-08-17 21:08:31 · 9041 阅读 · 0 评论 -
C语言DLL封装DLL,嵌套封装DLL
C语言DLL封装DLL,嵌套封装DLLctypes没能解决c_int类型会变成c_long类型这个问题。所以调库失败,有大手子可以教教我 x = c_int(0) x.value=1 print("type(x) is "+str(type(x)))type(x) is <class 'ctypes.c_long'>经过大佬的建议,重新封装原有的库,再嵌套一个DLL库,并再c环境里转换类型目前有的文件,还挺多SI_errors.hSI_sensor.hS原创 2020-08-15 22:35:04 · 1101 阅读 · 0 评论 -
pyqt(python)下导入opencv
明确要安装的东西在python下使用的opencv库我们一般称CV2,基于对象,cv应该是基于过程,像C语言那样。要想在pyqt里使用opencv,必须安装opencv-python的库,要和自己的python版本对应。本机环境:vscode下的虚拟环境(相对来说多做一步,复制文件而已)pyqt5python3.6.5所以我需要下载支持cp36的opencv包(cp36值得就是python3.6),查看对应版本的话去这个网址.然后顺便去下载一个whl文件。后面安装,这里有个百度云链接 提取码:原创 2020-08-13 21:54:59 · 924 阅读 · 0 评论 -
python调用c语言的库(动态库DLL)
@真开心啊,聚精会神找一天错误没找到,看个视频摸摸鱼就找到了首先要明确的怎么导入项目所需,需要使用pyqt写界面,然后里有涉及电机和摄像头的调用,底层驱动是c语言写好了,并导出了动态库dll文件。导入方法可以使用ctypes和cffi方法导入,不过好像资料都不多我用的是ctypes在python代码的头部导入库import ctypesfrom ctypes import *AMC = ctypes.cdll.LoadLibrarylib_amc = AMC("./driver/amc原创 2020-08-12 22:21:47 · 1287 阅读 · 0 评论 -
vs code 无法找到自己添加的头文件
最近在补C语言,好多东西都忘了,尴尬。先上图看问题:博主在复习预编译的时候用了下头文件,刚好也是用的前段时间装的vs code(以前用的VC++,除了界面其他都挺好用的。。。),添加了个头文件,然后无法找到文件,明明就是防在同一个文件夹的。上图:后来查了下,各种方法都有,给整懵了。其实最简单的办法就是把<>换成“”。因为#include< >引用的...原创 2019-10-25 13:35:00 · 20657 阅读 · 6 评论