CSDN 最近老是脚本停止响应

zgl7903 2015-07-06 04:54:32
打开 http://bbs.csdn.net/forums/VC 页面,打开几个链接,空闲一会儿或电脑待机了,再想去浏览的时候,总是出现脚本停止响应,CPU占用率狂高

不知道论坛技术人员是不是不看你们自己的作品啊,好一阵子了都
IE8 IE10 火狐 上都这样子
...全文
261 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_37591842 2017-02-20
  • 打赏
  • 举报
回复
可能是因为显卡问题,然后卡出来了
ji451119366 2016-05-18
  • 打赏
  • 举报
回复
#include "cv.h" #include "highgui.h" #include<iostream> #include<fstream> #include<math.h> using namespace std; int window=15; float LimenValue(float *comhist,int num)//阈值 { float mean = 0; float sum = 0; float T; float max; float min; float mmax = 0; float mmin = 0; float summin = 0; float summax = 0; float mincount = 0; float maxcount = 0; float median; float factor = 4; int i = 0; max = comhist [num]; min = comhist [num]; for( i = 0;i<window;i++) { sum +=comhist[num+i]; if(comhist[num+i]>max) { max = comhist[num+i]; } if(comhist[num+i]<min) { min = comhist[num+i]; } } mean = sum / window; median = (max +min) / 2; //计算大小两集合均值 for (i = 0;i< window;i++) { if (comhist[num+i] <= median) { summin +=comhist[num+i]; mincount++; } else { summax +=comhist[num+i]; maxcount++; } } mmin = summin / mincount; mmax = summax / maxcount; //计算是否有突变,返回阈值 if(fabs(mmax-mmin)>(factor*mean)) //如果 |mmax - mmin | > (Factor*mean)为真 T = (mmin+mmax * 2) / 3; //T = (mmin + mmax * 2) / 3作为阈值 else T = max + 10; return T; } float LimenValue2(float * comhist, int num1, int num2) { float avervalue = 0; //均值 float variance = 0; //方差 float sum = 0; //和 float squaresum = 0; //差值平方的和x float limen; int num = num2 - num1 + 1; for(int i = num1; i<= num2; i++) { sum += comhist[i]; squaresum += comhist[i] * comhist[i]; } avervalue = sum / num; variance = squaresum / num - avervalue*avervalue; limen = avervalue + 30*variance; return limen; } int main(int argc, char** argv) { CvCapture * capture = NULL; //设置读取视频数据的指针 IplImage * Frame = NULL; IplImage * preFrame = NULL; //前一帧 IplImage * frame1 = NULL; IplImage * frame2 =NULL; int HistogramBins = 256; float HistogramRange1[2] = {0,255}; float * HistogramRange[1] = {&HistogramRange1[0]}; char * aviname = "F://视频//2.MP4"; //输入视频 char filename[3000]; //保存图片时用的变量 int totalFrmNum; //总帧数 int nFrmNum = 0; float * pCompareHist; //存放所有相邻帧间直方图差值的指针 int * sceneframe; //镜头突变处,后一镜头第一帧表示//int * keyframe; float fLimenValue; //阈值 float fLimenValue2; int scenecount = 0; cvNamedWindow("新闻视频",CV_WINDOW_AUTOSIZE);//读入视频 capture = cvCaptureFromAVI(aviname); totalFrmNum =(int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_COUNT)-1; if(!capture) { fprintf(stderr,"Could not initialize capturing...\n"); return -1; } while(Frame = cvQueryFrame( capture)) { sprintf(filename,"allframe/%d.jpg",nFrmNum); cvSaveImage(filename, Frame); nFrmNum++; cvShowImage("新闻视频",Frame); cvWaitKey(5) ; } cvReleaseCapture(&capture); cvDestroyWindow("新闻视频"); //创建直方图 CvHistogram*Histogram=cvCreateHist(1,&HistogramBins,CV_HIST_ARRAY,HistogramRange); CvHistogram*Histogram2=cvCreateHist(1,&HistogramBins,CV_HIST_ARRAY,HistogramRange); //计算相邻帧间直方图差值 pCompareHist = new float [totalFrmNum]; float CompareHist = 0; pCompareHist[0] = 0; capture = cvCaptureFromAVI(aviname); nFrmNum = 0; while (Frame = cvQueryFrame(capture)) { if (nFrmNum==0) { frame1 = cvCreateImage(cvSize(Frame->width,Frame->height),IPL_DEPTH_8U,1); frame2 = cvCreateImage(cvSize(Frame->width,Frame->height),IPL_DEPTH_8U,1); } else if(nFrmNum > 1) { cvCvtColor(Frame,frame1,CV_BGR2GRAY); cvCvtColor(preFrame,frame2,CV_BGR2GRAY); cvCalcHist(&frame1,Histogram,0,0);//计算当前帧的直方图 cvCalcHist(&frame2,Histogram2,0,0);//计算前一帧的直方图 //直方图归一化 cvNormalizeHist(Histogram,1); cvNormalizeHist(Histogram2,1); //计算当前帧与前一帧的直方图差 CompareHist = (float)cvCompareHist(Histogram,Histogram2,CV_COMP_CHISQR); pCompareHist[nFrmNum-1] = CompareHist; } preFrame = cvCloneImage(Frame); nFrmNum++; } //释放图像和矩阵 cvReleaseCapture(&capture); cvReleaseImage(&Frame); cvReleaseImage(&frame1); cvReleaseImage(&frame2); cvReleaseHist(&Histogram); cvReleaseHist(&Histogram2); printf("镜头突变处帧:\n"); sceneframe = new int[totalFrmNum]; //计算突变帧 for (int i = 0; i < (totalFrmNum - (totalFrmNum%window));) { fLimenValue = LimenValue(pCompareHist,1); for (int j = 0; j < window; j++) { if (pCompareHist[i+j] > fLimenValue) { printf("%d,",i+j+1); /*cvNamedWindow("突变帧",CV_WINDOW_AUTOSIZE); cvShowImage("突变帧",sceneframe); cvDestroyWindow("突变帧"); cvReleaseImage;*/ sceneframe[scenecount] = i+j+1; scenecount++; } } i +=window; } scenecount++; //保存pCompareHist数组到CompareHist.txt文件中 //保存sceneframe数组到SceneFrame.txt文件中 fstream out1; out1.open("CompareHist.txt",ios::out); if (!out1) { cerr<<"CompareHist.txt can not open.\n"; abort(); } for (int i = 0; i < totalFrmNum; i++) { out1<<pCompareHist[i]; out1<<"\n"; } out1.close(); out1.open("ScenceFrame.txt",ios::out); if (!out1) { cerr<<"ScenceFrame.txt can not open.\n"; abort(); } for (int i = 0; i < scenecount-1; i++) { out1<<sceneframe[i]; out1<<"\n"; } out1.close(); //保存突变帧 int count = 0; nFrmNum = 0; capture = cvCreateFileCapture(aviname); while (Frame = cvQueryFrame( capture)) { if (nFrmNum == sceneframe[count]) { sprintf(filename,"sceneframe/%d.jpg",nFrmNum); cvSaveImage(filename, Frame); count++; } nFrmNum++; } cvReleaseCapture(&capture); //提取关键帧 int* keyframe = new int[totalFrmNum];//存关键帧的数组 int* scenekeycount = new int[scenecount];//scenekeycount[k]表示镜头K内的关键帧数 int keycount = 0;//视频内所有关键帧数 int firstcomp = 1;//镜头第一帧 int lastcomp;//镜头最后一帧 int l; for (int k = 0; k < scenecount; k++) { scenekeycount[k] = 0; //当k不是最后一个镜头时,lastcomp为第k个镜头突变帧减2 if(k<scenecount) lastcomp = sceneframe[k]-2;//k为最后一个镜头,lastcomp为总帧数减1 else lastcomp = totalFrmNum-1; //利用函数LimenValue2()求阈值fLimenValue fLimenValue2 = LimenValue2(pCompareHist, firstcomp, lastcomp); for ( l = firstcomp; l <=lastcomp; l++) { //当1为镜头首个帧差值时,镜头内的第一个关键帧设置为镜头首帧 if(l == firstcomp) { keyframe[keycount]=firstcomp; keycount++; scenekeycount[k]++; } if(pCompareHist[1]>fLimenValue2) { //如果当前关键帧与前一个帧距离小于15时 keyframe[keycount]=l+1; keycount++; scenekeycount++; if((keyframe[keycount]-keyframe[keycount-1])<15) { if(keyframe[keycount-1]==firstcomp) keyframe[keycount]=0; else { if (pCompareHist[keyframe[keycount]]>=pCompareHist[keyframe[k-1]]) keyframe[keycount-1]=keyframe[keycount]; else keyframe[keycount]=0; } keycount--; scenekeycount[k]--; } keycount++; scenekeycount[k]++; } } firstcomp = sceneframe[k]; } //保存关键帧 count = 0; nFrmNum = 0; capture = cvCreateFileCapture(aviname); int scenenum = 0;//镜头号 int a = 0; while(Frame = cvQueryFrame(capture)) { //关键帧保存在keyframe文件夹内,命名方式为“镜头号-帧号” if (nFrmNum == keyframe[count]) { for (scenenum = 0;scenenum<scenecount;scenenum++) { if (nFrmNum<sceneframe[scenenum]) { sprintf(filename,"keyframe/%d-%d.jpg",scenenum+1,nFrmNum); cvSaveImage(filename,Frame); } if((sceneframe[scenenum]<nFrmNum)) { sprintf(filename,"keyframe/%d-%d.jpg",scenenum+1,nFrmNum); cvSaveImage(filename,Frame); } } count++; } nFrmNum++; } cvNamedWindow("关键帧",CV_WINDOW_AUTOSIZE); cvShowImage("keyframe/%d-%d.jpg",Frame); cvWaitKey(5); cvReleaseCapture(&capture); cvDestroyWindow("关键帧"); if (pCompareHist!=NULL) { delete[]pCompareHist; } //输出txt //保存keyframe数组到keyframe.txt文件中 out1.open("Keyframe.txt",ios::out); if(!out1) { cerr<<"keyframe.txt can not open.\n"; abort(); } for(int i=0;i<keycount;i++) { out1<<keyframe[i]; out1<<"\n"; } out1.close(); return 0; } 大神,能不能帮我看下这段代码是什么算法啊啊啊啊,好急
zgl7903 2015-07-07
  • 打赏
  • 举报
回复
唉 算了 CSDN也就这样了 不指望啥, 结贴散分
赵4老师 2015-07-07
  • 打赏
  • 举报
回复
嘿嘿,赚大分了!
处处留心 2015-07-06
  • 打赏
  • 举报
回复
之前一下载就提示javascript(0)
lx624909677 2015-07-06
  • 打赏
  • 举报
回复
直接把问题发给胖纸吧,发这csdn技术人员应该看不到
赵4老师 2015-07-06
  • 打赏
  • 举报
回复
在hosts文件中添加以下几行:
127.0.0.1         pos.baidu.com
127.0.0.1         cb.baidu.com
127.0.0.1         cbjslog.baidu.com
127.0.0.1         csi.gstatic.com
127.0.0.1         csdnim.allyes.com
127.0.0.1         job.csdn.net
127.0.0.1         dc.csdn.net
127.0.0.1         ag.csdn.net
127.0.0.1         edu.csdn.net
127.0.0.1         s*-im-notify.csdn.net
127.0.0.1         www.google-analytics.com

1,649

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 非技术类
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧