
图像处理
文章平均质量分 72
LIZhang2016
本人从事于机器视觉,主要是关于机器识别技术,用到opencl加速,opencv,和图像处理的算法,以及音视频相关技术
展开
-
Float 类型图片数据,生成32维
1,本文程序主要是对RGBA float 类型的数据,插值生成32维#include <stdio.h>#include <stdlib.h>#include <math.h>#include <string.h>#include "math_ext.h"float uu[9] = {1.0000f, 0.9397f, 0.7660f, 0.500f, 0.1736f, -0.1736f,原创 2016-05-24 18:52:11 · 1427 阅读 · 0 评论 -
点到直线的距离
http://www.5ykj.com/Health/gaoer/30583.htm转载 2017-02-08 11:21:56 · 1868 阅读 · 0 评论 -
NV12 图像的线性插值
#undef clamp_g#define clamp_g(x, minValue, maxValue) ((x) < (minValue) ? (minValue) : ((x) > (maxValue) ? (maxValue) : (x)))/*输入的宽高和输出的宽高都要是偶数*/int NV12Linear(unsigned char * srcImage, unsigned cha原创 2017-03-21 17:41:06 · 1195 阅读 · 0 评论 -
NV12 图像数据的旋转
/img 原始数据destImg 目的数据m_width 原始数据的宽,旋转后可能改变m_height 原始数据的高m_cammer 0 前置摄像头 1 后置摄像头m_angle 角度看程序决定图像右旋还是左旋还有镜像/static int imgRotationNew(unsigned char *img, unsigned char *destImg, int * m_width,原创 2017-03-22 11:08:25 · 1686 阅读 · 1 评论 -
图像截取c代码
// 图像截取函数int clamp_s(int value, int m_min, int m_max){ int mm_ret = value; if(value < m_min) { mm_ret = m_min; }else if(value > m_max) { mm_ret = m_max; }原创 2016-11-08 20:04:58 · 2620 阅读 · 1 评论 -
NV21转BGR图像
#undef clamp_g#define clamp_g(x, minValue, maxValue) ((x) < (minValue) ? (minValue) : ((x) > (maxValue) ? (maxValue) : (x)))int NV12ToBGR(unsigned char * srcYVU, unsigned char * destBGR, int width, in原创 2017-03-21 17:46:34 · 2890 阅读 · 1 评论 -
NV12 图像数据的插值时候旋转
static int ChangeWH(int angle, int destW, int destH, int * afterW, int * afterH){ if ((angle == 0 || angle == 180)) { *afterW = destH; *afterH = destW; } else {原创 2017-03-22 17:04:37 · 701 阅读 · 0 评论 -
一张二值图,求所有黑色区域的面积
// BaiSeAear.cpp : 定义控制台应用程序的入口点。//// 此方法用for循环代替递归的算法,个人感觉很好,因为之前用递归算法,面积大的时候会出现段错误#include "stdafx.h"#include "cv.hpp"typedef struct _info_{ int saveBlackNum; int * saveBlack;}Info;stat原创 2017-04-27 11:34:49 · 4273 阅读 · 0 评论 -
图像积分图代码实现(c代码)
// src 输入图像,灰度图(单通道)// width 输入图像的宽// height输入图像的高// dest 输出的积分图(外部开空间为 (width + 1)* (height + 1) * sizeof(int))// dest结果的第一行第一列都为0int integral(unsigned char * src, int width, int height, int * de原创 2017-06-05 15:14:33 · 2703 阅读 · 0 评论 -
Fast 角点提取c++代码
本人近来研究opencv的Fast 的源码,发现opencv 对Fast 的算法写的有优化,并不方便初学者来理解代码,本人根据Fast 算法的原理,写了一个相对非常好理解的Fast 算法,在速度上不如opencv, 但是在代码的理解和简洁上绝对是更胜一抽,希望能帮助更多学习Fast 算法的同学们,请大家相信,本程序Fast 的结果经过验证和opencv 结果一样,请大家放心使用。 下面是头文件st原创 2017-06-16 17:06:42 · 2416 阅读 · 1 评论 -
均值滤波代码 C代码
// 本函数是实现 3 * 3 均值滤波//函数的的当前点的像素 = 3 * 3 范围的平均值// @para src 输入图像数据// @para srcW 输入图形宽// @para srcH 输入图像的高// @para channels 通道数 // @para dest 输出图像 , 输出图像的大小和输入一样 int MeanFilter(unsigned char *原创 2017-07-15 21:04:02 · 6620 阅读 · 1 评论 -
图像数据写入到文件(读写文件)
本文主要对图像的data 数据写入到文件(包括文本格式,和二进制文件)//首先在桌面建立一个CR_Result1文件夹static char* dumpRoot = "C:\\Users\\seven\\Desktop\\CR_Result1\\";static char file2open[1024];//保存为二进制的文件//filename 保存文件的名字// buf 要保存的数据原创 2016-05-30 10:59:18 · 3923 阅读 · 0 评论 -
距离变换代码实现(c代码)
#include <stdio.h>#include <stdlib.h>// Removal Function - FVs that are the Voronoi sites of Voronoi cells that do not intersect Rd are removedstatic int RemoveEDT(const float du, const float dv, con翻译 2017-07-31 17:26:59 · 725 阅读 · 0 评论 -
线性插值 c代码.....
int clamp_s(int value, int m_min, int m_max){ int mm_ret = value; if (value < m_min) { mm_ret = m_min; } else if (value > m_max) { mm_ret = m_max; } ret原创 2017-03-14 12:15:13 · 6219 阅读 · 0 评论 -
NV12 数据的抠图
// src 原始数据 是nv12 的YUV数据,直接从手机摄像头采集的数据// dest 截取的数据 开辟的空间大小为(x1 - x0 + 1) * (y1 - y0 + 1)包含两边的点// srcW 原始数据的宽// srcH 原始数据的高// x0 y0 左上角的坐标点 (必须是偶数)// x1 y1 右下角的坐标点 (必须是奇数)int nv12CutImage(unsigne原创 2017-04-17 18:46:27 · 1915 阅读 · 0 评论 -
opencv的Mat数据和JPG数据的相互转化
Mat 一个图像数据转化为jpg图片buffer 压缩率可以变为原来的 1/ 15 - 1 / 10Mat2Img.h#ifndef MAT2IMG_H#define MAT2IMG_H#include "opencv2/opencv.hpp"#include <vector>namespace rr{ class Mat2Img { public: M...原创 2019-01-07 16:28:49 · 24669 阅读 · 2 评论 -
求内切圆的圆心和半径(已知三个点的坐标)
/******m0 n0 m1 n1 m2 n2 为三角形的三个点的坐标值 m为横坐标 n为纵坐标px 内切圆的圆心的横坐标py 内切圆的圆心的纵坐标pr 内切圆的半径***/int NeiQieYuan(int m0, int n0, int m1, int n1, int m2, int n2, float *px, float *py, float *pr){ int dax原创 2017-02-08 10:15:28 · 6947 阅读 · 0 评论 -
在图像上画圆算法(c代码实现)
此处给出两种画圆的方法方法二:没有线条宽度的参数,默认是1,如果想实现线条宽度可以外部循环调用,半径r++,此处著名方法二画出的图像可能有像素点没画上,若要完善自行处理。// data 图像数据// width图像宽度// height图像高度// channel图像通道// x0 圆心坐标x// y0 圆心坐标y// r 圆心半径// shinner 线条宽度// red 红色通原创 2016-11-19 17:14:07 · 8661 阅读 · 2 评论 -
在图像上画一个矩形c代码
//防止图像出界的函数int clamp_s(int value, int m_min, int m_max){ int mm_ret = value; if(value < m_min) { mm_ret = m_min; }else if(value > m_max) { mm_ret = m_max; }原创 2016-11-19 16:07:56 · 2807 阅读 · 1 评论 -
32 通道填边
此函数是上一篇的改进,生成32通道的填边,可以直接替换上一篇的这两个函数//填边宽 1 + maxModelX//填边高 1 + maxModelYint outCell(float * NL18, float * LB, float * des, int srcW, int srcH, int maxModelX, int maxModelY){ int desW = srcW -原创 2016-05-27 15:09:28 · 294 阅读 · 0 评论 -
图像卷积算法
#include "stdafx.h"#include <stdio.h>#include <stdlib.h>#include <string.h>/************************src 输入的channel通道的数据des 输出卷积数据 只有一通道,是channel 通道卷积之和model 输入的模板数据srcW 输入数据的宽度srcH 输入数据的高度des原创 2016-05-27 15:56:15 · 709 阅读 · 0 评论 -
动态规划
1,本文主要对一个二维的图像数据做动态规划 此函数为每次处理一行或是一列的函数/*********************************************************src 输入图像的一行数据的指针 des 输出动态规划后的结果ptr 动态规划后的行索引step 行数据为1n 每行的数据量 即图像的宽度a b 函数 ax2 + bxrange 动态规划原创 2016-05-27 21:55:14 · 447 阅读 · 1 评论 -
图像数据类型转化float 和 uchar 之间
// 数据类型转化 float 转化为 unsigned char// src 要转化的数据// des 目标数据// width 输入数据的宽// height 输入数据的高int convertF1ToU1(float * src, unsigned char * des, int width, int height){ int i, j, temp; for(i原创 2016-05-30 10:05:18 · 13077 阅读 · 2 评论 -
图像数据的拉伸显示
1,本文主要是对float 类型的图像数据,进行的拉伸(拉伸到0-255)显示,用到opencv 库// 本程序输入一个src float 类型的数据,经过数据的拉伸显示为图片, 用到opencv 库中的显示// CV_32FC1 * n 维度的数据显示其中的一维// src 为 CV_32FC1// src 为float 类型的buffer 数据// width src 的宽// hei原创 2016-05-30 09:56:32 · 1972 阅读 · 0 评论 -
卷积和动态规划的简单测试程序
// convolutionTest.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <stdio.h>#include <stdlib.h>#include <string.h>#ifndef min#define min(v1, v2) ((v1) < (v2) ? (v1) : (v2))#endif#ifndef max#原创 2016-05-30 18:11:24 · 390 阅读 · 0 评论 -
四舍五入函数
// 头文件#ifndef _MATH_EXT_H_#define _MATH_EXT_H_#ifndef min#define min(v1, v2) ((v1) < (v2) ? (v1) : (v2))#endif#ifndef max#define max(v1, v2) ((v1) > (v2) ? (v1) : (v2))#endifint round(float num原创 2016-05-31 22:09:26 · 546 阅读 · 0 评论 -
N通道Float 差值算法
1,本文主要是对N 通道的Float 类型的一种比较好的差值算法#include <stdio.h>#include <stdlib.h>#include <math.h>#include <string.h>#include "math_ext.h"#if 1//纵向差值/* src 输入图片数据指针 des 输出图片的数据指针 srcW 输入图片的宽 sr原创 2016-05-23 19:14:21 · 403 阅读 · 0 评论 -
一种完美的降采样插值方法
1,本文以RGBA 图片的降采样为例子 2, 先纵向插值 3,然后横向插值#include <stdio.h>#include <stdlib.h>#include <math.h>#include <string.h>//纵向差值/* src 输入图片数据指针 des 输出图片的数据指针 srcW 输入图片的宽 srcH 输入图片的高 desH 输出原创 2016-05-21 11:14:59 · 1206 阅读 · 0 评论 -
float类型图片降采样差值方法
1,本文代码主要是对float类型的图片进行的降采样的差值方法 2, 对外的函数接口只有一个 对单通道float 类型的数据进行的降采样差值 (在opencv 中是Mat 类型是CV_32FC1) src 输入图片数据指针 (如果是Mat类型,实参为(float)Mat.data) des 输出图片的数据指针(如果是Mat类型,实参为(float)Mat.data)原创 2016-05-23 11:21:07 · 423 阅读 · 0 评论 -
图像旋转在opencL 实现方法
// kernel 代码 theta 为旋转角度 如45__constant sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE | CLK_FILTER_LINEAR | CLK_ADDRESS_CLAMP;__kernel void rotation(__read_only image2d_t inputImage, __write_only i原创 2016-06-28 16:08:48 · 1633 阅读 · 1 评论 -
图像数据拉伸显示2(可以显示任何通道,也可以显示全部通道)
// 本程序输入一个src float 类型的数据,经过数据的拉伸显示为图片, 用到opencv 库中的显示//fileName 显示窗口的名字// src 为 若为CV_32FC1 则输入为 mat.data// src 为float 类型的buffer 数据// width src 的宽// height src 的高// channel 通道数// showDim 要显示的通道原创 2016-06-28 18:36:46 · 374 阅读 · 0 评论 -
生成高斯核
// makeGause.cpp : 定义控制台应用程序的入口点。//#include <stdio.h>#include <math.h>#include <memory.h>#include <malloc.h>#define ENumber 2.71828183f#define PI 3.1415926fint makeGaussianData(float ** data, i原创 2016-08-15 22:30:02 · 892 阅读 · 1 评论 -
在一个图像数据上画圆点
// 限制图像, 防止出界static int clamp_s(int value, int m_min, int m_max){ int ret = value; if(value < m_min) { ret = m_min; }else if(value > m_max) { ret = m_max; }原创 2016-10-16 20:54:54 · 1534 阅读 · 0 评论 -
图像旋转c代码实现(90度, -90度, 180度)
// 顺时针 90 度// src 图像数据// srcW 图像宽度// srcH 图像高度// channel 图像通道int RotationRight90(unsigned char * src, int srcW, int srcH, int channel){ unsigned char * tempSrc = NULL; int mSize = srcW *原创 2016-11-19 13:06:41 · 17832 阅读 · 8 评论 -
caffe 在window上的编译
1:下载源码 https://github.com/BVLC/caffe.git2: 切换到windows 分支 : git checkout windows, 如果是下载zip, 切换到windows 分支3: 参考网址 https://blog.youkuaiyun.com/qwfzpk/article/details/79112097注意事项:1:下载 Anaconda python 3.5(...原创 2019-05-10 15:36:26 · 488 阅读 · 0 评论