首先需要一个鼠标钩子了指导鼠标在什么位置
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace GlobalMouseHook
{
public class MouseHook
{
private const int WM_MOUSEMOVE 阅读全文>
发表于 @ 2010年01月27日 02:58:00 | 评论( loading... ) | 举报| 收藏
#ifndef GRAPH_H
#define GRAPH_H
#include
#include
#include
#include
// NOTE: in UNIX you need to use -DNDEBUG preprocessor option to supress assert's!!!
//----------------------------------最大流相关的---------------------------------
template class Block
{
public:
/* Constructor. Arguments are the block size and
(optionally) the po阅读全文>
发表于 @ 2010年01月12日 22:19:00 | 评论( loading... ) | 举报| 收藏
int otsu (IplImage *image, int rows, int cols, int x0, int y0, int dx, int dy, int vvv)
{
unsigned char *np; // 图像指针
int thresholdValue=1; // 阈值
int ihist[256]; // 图像直方图,256个点
int i, j, k; // various counters
int n, n1, n2, gmin, gmax;
double m1, m2, sum, csum, fmax, sb;
// 对直方图置零
memset(ihist, 0, sizeof(ihist));
gmin=255; gmax=0;
// 生成直方图
/**//*for (i = y0 + 1; i 阅读全文>
发表于 @ 2009年11月25日 11:52:00 | 评论( loading... ) | 举报| 收藏
inline bool IsContour( const IplImage* pImg,int iRow,int iCol )
{
//if( iRow==0 || iRow==pImg->height-1 || iCol==0 || iCol==pImg->width-1 )
// return true;
CvScalar s0 = cvGet2D(pImg,iRow,iCol);
CvScalar up;
CvScalar up_right;
CvScalar up_left;
CvScalar right;
CvScalar left;
CvScalar down_left;
CvScalar down_right;
CvScalar down;
if( iRow+1height )//down
down = cvGet2D(pImg,iRow+1,iCol);
else
down.val[0] = -1;
if( iCol+1width )//right
rig阅读全文>
发表于 @ 2009年11月23日 22:12:00 | 评论( loading... ) | 举报| 收藏
两种可能:1,你访问越界
2,stack空间大小不够用。
今天写了个递归函数在1024x1024的图像上递归的搜索一个解,结果程序泡不到一半就stack overflow了
最后在属性->连接器->系统->堆栈保留大小那里把stack空间加大,程序成功跑完。好囧阅读全文>
发表于 @ 2009年11月15日 20:14:00 | 评论( loading... ) | 举报| 收藏
【开源软件】 • rsync • Unison • WinSCP • PowerFolder • Directory Synchronize (DirSync) • iFolder • JFileSync • FullSync • OpenSync • Conduit 【自由软件】 • SyncEXPERT • Allway Sync • SyncBack • BestSync • SyncMate • FolderShare • SyncToy • Windows Mobile Device Center • Easy2Sync • ViceVersa 【商业软件】 • Robocopy • Synchronize It! 3 • Synchromagic • GoodSync • SugarSync • Bamboo File Sync • SureSync • Super Flexible File Syn阅读全文>
发表于 @ 2009年11月10日 23:11:00 | 评论( loading... ) | 举报| 收藏
访问图像元素假设需要读取在i行j列像点的第k通道. 其中, 行数i的范围为[0, height-1], 列数j的范围为[0, width-1], 通道k的范围为[0, nchannels-1].
间接存取:
(比较通用, 但效率低, 可读取任一类型图像数据)
对单通道字节图像:
IplImage* img=cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1);
CvScalar s;
s=cvGet2D(img,i,j); // get the (i,j) pixel value
printf("intensity=%f\n",s.val[0]);
s.val[0]=111;
cvSet2D(img,i,j,s); // set the (i,j) pixel value
对多通道浮点或字节图像:
IplImage* img=cvCreateImage(cvSize(640,480),IPL_DEPTH_32F,3);
CvScalar s阅读全文>
发表于 @ 2009年11月04日 13:10:00 | 评论( loading... ) | 举报| 收藏
指针之后必有release,否则,后果很严重。。。。
今天吃大亏了。
double* distance = new double[W*H] 一个大数组忘释放
还有两个IplImage* p1
IplImage* p2
忘记释放。结果等了半天,跳出一个对话框,程序被强制terminated。。。。
被系统内存吃尽了。
以后记得来一个指针就先写上release阅读全文>
发表于 @ 2009年10月29日 15:55:00 | 评论( loading... ) | 举报| 收藏
C/C++宽字符 很讨厌宽字符!!! 宽字符处理函数函数与普通函数对照表 字符分类: 宽字符函数 普通C函数描述 iswalnum() isalnum() 测试字符是否为数字或字母 iswalpha() isalpha() 测试字符是否是字母 iswcntrl() iscntrl() 测试字符是否是控制符 iswdigit() isdigit() 测试字符是否为数字 iswgraph() isgraph() 测试字符是否是可见字符 iswlower() islower() 测试字符是否是小写字符 iswprint() isprint() 测试字符是否是可打印字符 iswpunct() ispunct() 测试字符是否是标点符号 阅读全文>
发表于 @ 2009年10月25日 11:42:00 | 评论( loading... ) | 举报| 收藏
1,\b 指的是代表着单词的开头或结尾,也就是单词的分界处。 \bhi\b可以精确的匹配出hi 比如有文本 hi hiisgood ,\bhi\b精确地匹配出hi。\bhi表示以hi开头,hi\b表示以hi结尾 2,.是另一个元字符,匹配除了换行符以外的任意字符。*同样是元字符,不过它代表的不是字符,也不是位置,而是数量——它指定*前边的内容可以连续重复使用任意次以使整个表达式得到匹配。因此,.*连在一起就意味着任意数量的不包含换行的字符。 \bhi\b.*\blucy\b 可以匹配出 hi, i am kayv, this is lucy 3,\d 和计数匹配 这里的\d是个新的元字符,匹配一位数字(0,或1,或2,或……)。-不是元字符,只匹配它本身——连字符(或者减号,或者中横线,或者随你怎么称呼它)。 为了避免那么多烦人的重复,我们也可以这样写这个表达式:0\d{2}-\d{8}。 这里\d后面的{2}({8})的意思是前面\d必须连续重复匹配2次(8次)。 4,元字符 表1.常用的元字符 代码 阅读全文>
发表于 @ 2009年10月07日 15:37:00 | 评论( loading... ) | 举报| 收藏
先看一个无意义的写法: const int f(); 注意这个函数是按值返回的,即返回的值是经过拷贝的副本。这当然毫无意义,你想告诉我,不要改变函数里面的值,现在我们返回的是一个拷贝副本,当然改变不了我们函数里的值。一般来说,内部类型(int之类)不需要用返回const值。 如果返回自定义类型,那么定义返回时const值的意思是告诉你这个返回值不能当左值使用。如 A f(){}和const A g(); 允许f() = A();而不允许 g() = A() class X { int i; public: X(int ii=0){i=ii;} void Modify(){i++;} }; X f5() { return X(); } const X f6() { return X(); } void f7(X& x) { x.Modify(); } int main() { f5() = X();阅读全文>
发表于 @ 2009年10月06日 14:48:00 | 评论( loading... ) | 举报| 收藏
structStructure1{ charc; inti; floatf; doubled; //charcc;}; structStructure1s1; s1.c = 'a'; s1.i = 10; s1.f = float(1.11); s1.d = 2.22; cout cout cout阅读全文>
发表于 @ 2009年10月05日 16:01:00 | 评论( loading... ) | 举报| 收藏
先看一段代码constinti= 0;// int* t = &i; // 出错,因为不安全 int*j = (int*)&i; // 有了(int*)的类型转换就ok //更标准的写法是 int*k = const_cast(&i); *j= 10; cout cout coutcout输出:i=0--0012FF60 你知道为什么*j被改变了但是i的第一次输出阅读全文>
发表于 @ 2009年10月05日 15:25:00 | 评论( loading... ) | 举报| 收藏
C++里也有指针,为什么需要引用呢?(pass by reference)。引用的基本思想和指针是一样的:用引用传递参数地址。引用比指针有一个更大的优势是带引用的函数调用比带指针的函数调用在语法构成上更清晰。
当你使用如下代码时,会说明一个问题,函数里的调用实际上可以改动外部值,即可函数里的i
只是外面tmp
的一个别名,他们两实际上在内存里占用同样的存储区
voidtestReference
(int
& i
)
{
cout
}
inttmp
= 10;
cout
testReference
(tmp
); //pass by reference
address of tmp 阅读全文>
发表于 @ 2009年10月05日 15:18:00 | 评论( loading... ) | 举报| 收藏
(点击每个菜的菜名,可以查看具体过程)可乐鸡翅脆皮豆腐蒜蓉娃娃菜鲫鱼豆腐汤梅干菜烧肉四季豆炒肉丝蒜苔炒肉丝豇豆炒肉丝茭白肉丝豆豉鸡翅红烧青鱼段鸭肫炒青椒牛肚炒大蒜香菇排骨盐水对虾莴笋烧肉腐竹烧肉蚝油牛肉洋葱炒鸡蛋青椒肉丝百合鱼片排骨萝卜汤蚝油生菜酸辣土豆丝
茄子西红柿
鱿鱼炒洋葱大白菜烧藕丸子木耳鱼丸黄花菜炒鸡蛋糖醋炸香骨咖喱土豆牛肉面筋青椒毛豆鸡丁红烧鲳扁鱼干煸四季豆毛豆烧鸡块爆炒腰花爆炒圆白菜黄豆猪蹄鱼香肉丝西红柿炒鸡蛋面筋包塞肉花菜烧肉糖醋带鱼紫菜蛋汤红烧茄子红烧豆腐虾仁青菜榨菜肉丝汤豆腐金针菇汤平菇鱼丸汤皮蛋黄瓜汤
此日志来自手机Qzone!手机访问z.qq.com,随时随地记录我心情!本服务完全免费,详情请进>>阅读全文>
发表于 @ 2009年07月22日 16:29:00 | 评论( loading... ) | 举报| 收藏