视频检测遇到问题 |
尚未結案
|
jinzihan_009
一般會員 發表:12 回覆:41 積分:10 註冊:2005-07-22 發送簡訊給我 |
我现在的视频检测遇到个问题,程序能运行,但不理想。
我是想在浏览图象时,在图象窗口用鼠标任意画条红线,(竖直的),当物体(项目中是汽车)撞到红线时,触发抓图。 当视频图象在dspack中的vidowwindow载入近来时,我又参照dspack\demo\d6-d7\playVideoCap的这个例子中的callBack,让图象在image中实时显示,因为我可以很容易在image中取得象素值。而很难在videoWindow取得象素值。
之后我用timer每隔100ms取一遍平均灰度值。
timer的代码如下: procedure TVideoForm.Timer4Timer(Sender: TObject);
type
pArr =^TRGBTripleArray;
TRGBTripleArray = array [Byte] of TRGBTriple;
var
xp:PArr;
x,y,i,sum:integer;
avgGray_second:integer;//后一次平均灰度值
Gray:array of integer;
begin
sum:=0;
SetLength(Gray,img_1.Picture.Bitmap.Height);
img_1.Picture.Bitmap.PixelFormat:=pf24Bit;
for y:=0 to img_1.Picture.Bitmap.Height-1 do
begin
xp:=img_1.Picture.Bitmap.ScanLine[y];
Gray[y]:=round(xp[2].rgbtRed*0.3) round(xp[2].rgbtGreen*0.59) round(xp[2].rgbtBlue*0.11);
end;
for i:=0 to img_1.Picture.Bitmap.Height-1 do
begin
sum:=sum Gray[i];
end;
avgGray_second:=round(sum/img_1.Picture.Bitmap.Height); //四舍五入 求平均灰度 if bz_gray then //这个boolean变量为全局变量,用途就是判断是否为第二次采集平均灰度,因为第一次时,没法两次比较
begin
if avgGray_second - avgGray_first > strtoint(Edit1.Text) then 抓拍图象按钮.Click(); // Edit1.Text为我在界面上任意设定的 阈值,
end;
avgGray_first:=avgGray_second; //avgGray_first我是在全局变量中声明的。为前一次平均灰度值
bz_gray:=true;
end; 上面的我是取image中x=2的这列的灰度值,相当于红线就是x=2.
而我实际画红线是在image上面在放置一个透明的image22,在这个上面画红线。之后把红线的x值赋值给image。上面的就相当于赋的值是x=2. 我的不理想的地方是:运行正常,不过运行一段时间,就弹出英文错误。好象是地址不对,时间间隔越短,出错几率越大,不过,时间我还不能设置太大,否则汽车已经通过了。 请问有谁能帮我消除错误,或有更好的方法,判断汽车撞到红线。
|
jinzihan_009
一般會員 發表:12 回覆:41 積分:10 註冊:2005-07-22 發送簡訊給我 |
|
WoodTiger
初階會員 發表:35 回覆:90 積分:25 註冊:2003-08-01 發送簡訊給我 |
|
jinzihan_009
一般會員 發表:12 回覆:41 積分:10 註冊:2005-07-22 發送簡訊給我 |
|
jinzihan_009
一般會員 發表:12 回覆:41 積分:10 註冊:2005-07-22 發送簡訊給我 |
|
WoodTiger
初階會員 發表:35 回覆:90 積分:25 註冊:2003-08-01 發送簡訊給我 |
引言: 每次在弹出错误后,程序自动停在了“Gray[y]:=round(xp[2].rgbtRed*0.3) round(xp[2].rgbtGreen*0.59) round(xp[2].rgbtBlue*0.11);”这句话的前面。時間越短,出錯越多?會不會是在計算灰度的時候,圖像本身處於建立與釋放的過程中,也就是你在計算灰度的時候,圖像已經變化了,在你取下另一個灰度值的時候,圖像剛釋放或還沒來得及建立。 這段代碼是不是應該寫在SampleGrabber的onbuffer事件中? 祝順心! ================================== 搞得懂就答人,搞不懂就問人,沒有人懂還可以問神!
------
-=-=-=-=-=-=-=-=-=-=-= Eveything as your wish. |
jinzihan_009
一般會員 發表:12 回覆:41 積分:10 註冊:2005-07-22 發送簡訊給我 |
|
jinzihan_009
一般會員 發表:12 回覆:41 積分:10 註冊:2005-07-22 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |