是圆圈吗?逐个扫描,判断RGB,注意摄像头拍的不精准,应该设置一些偏差,比如(245,10,10)这个颜色也算红色(闸值可以稍微提高,减少误报。)。如果是电脑画的就肯定很精准,就不必设置误差,只有(255,0,0)才算。(部分格式也会出现误差!!!只有BMP才没有色彩误差。)可以先从左上扫描,得到最高点。然后从右下扫描,得到最低点。取线段中点(xy分别取平均数)。
最近在 USB设备通信,不停的从设备里获取数据,然后根据数据进行绘制线条, 之前一直无法实现 实时绘制线条,后来采用 异步模式, 开2个线程,即可解决。 所以,异步模式+线程=解决问题, 关键是靠自己慢慢琢磨了。 我也是没人指导之下,折磨了很多天,才得以解决
用opencv的库函数的话非常简单,
#include "cvh"
#include "highguih"
int main(int argc, char argv) {
cvNamedWindow("win");
CvCapture capture = cvCreateCameraCapture(0);
IplImage frame;
while(1) {
frame = cvQueryFrame(capture);
if(!frame) break;
cvShowImage("win", frame);
char c = cvWaitKey(50);
if(c==27) break;
}
cvReleaseCapture(&capture);
cvDestroyWindow("win");
return 0;
}
以上是代码,具体opencv库的安装配置网上很多的,你自己搜下配置好就可以。
其中hDireetory为使用CreateFile函数为指定路径生成文
件的句柄;lpBuffer为用于存储返回的文件访问信息的缓冲区
的指针;nBufferLength为以字节为单位的缓冲区的大小;
bWatchSubtree用于指定是否监控子文件夹,如果传人TRUE
则表示监控子文件夹;dwNotifyFiher用于指定监控的动作,例
如FILE NOTIFY_CHANGE_FILE_NAME表示监控文件重命名
这一动作,可以使用“I’,来组合多个这样的值,这样就能满
足几乎所有的监控需求;lpBytesReturned用于在同步调用中指
定传入lpBuffer的字节数,而在异步状态下传人NULL值即
可;lpOvedapped为指向OVERLAPPED结构的指针,仅在异
步调用中使用;最后一个参数是指向OVERLAPPED_COM—
PLETION_ROUTINE的指针,简单地传人NULL即可。
在线程函数中需要做的就是在一个while循环中循环调用
ReadDirectoryChanges函数,然后通过lpBuffer返回的文件访
问信息判断文件具体被如何改动了,然后通过不同安全级别
下的策略来实施文件保护 *** 作。在此系统中主要拦截了4种
件、修改文件和重命名文件,分别通过Action的4种取值
nI卫一ACTION ADDED、FILE-ACrn0N—REMOVED、F1LE_AC一
"l ION_MODI兀ED、nLE—ACllON RENAMED_OLD—NAME来区
别。
if(!capture)
{
//int count = 0;
//while(count<10) count++;
capture = cvCaptureFromCAM( 0 );
if(capture) AfxMessageBox(_T("ok"));
}
代码运行到if里面了吗?
1组合框用ExtendComBox控件,并添加事件处理CBN_SELCHANCE(控件中的选定内容已更改)
2声明成员变量,并在事件处理中获得ExtendComBox的值。
3在事件处理中,将值赋给EditCtrl
以上就是关于用C++或MFC怎么读取一张图然后识别出图上唯一红点的位置并以坐标形式保存下来图是摄像头拍出来的全部的内容,包括:用C++或MFC怎么读取一张图然后识别出图上唯一红点的位置并以坐标形式保存下来图是摄像头拍出来的、求助 MFC 怎么在视图持续读取并显示的同时,还能进行其他 *** 作、用C/C++写程序,调用笔记本自带摄像头获取图片等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)