用verilog编写源代码和测试程序

用verilog编写源代码和测试程序,第1张

下面的代码我已经用modelsim仿真过了,没有问题。

module count(out,clk,rst)//源程序

input clk,rst

output[3:0] out

reg[3:0] out

initial out=4'd0

always @(posedge clk or negedge rst)

begin

if(!rst) out=4'd0

else

begin

out=out+4'd1

if(out==4'd1||out==4'd6||out==4'd8) out=out+4'd1

if(out==4'd5) out=out+4'd2

end

end

endmodule

`timescale 1ns/1ns //测试程序

`include "count.v"

module count_tp

reg clk,rst

wire[3:0] out

parameter DELY=100

count mycount(out,clk,rst)

always #(DELY/2) clk=~clk

initial

begin

clk=0rst=1

#(DELY*5) rst=0

#DELY rst=1

#(DELY*20) $finish

end

initial $monitor($time,,,"clk=%d rst=%d out=%d",clk,rst,out)

endmodule

使用OpenCV测量图像中物体的大小

图像目标尺寸检测类似于计算从我们的相机到一个物体的距离——在这两种情况下,我们都需要事先定义一个比率来测量每个给定度量单位的像素数(pixels_per_metric)。在这里所说的这个被称为“pixels_per_metric”的比率指标,我在接下来的部分中对其更正式的定义。

pixels_per_metric

为了确定图像中物体的大小,我们首先需要使用一个参照物作为“校准”点。我们的参照物应该有两个重要的属性:

我们应该知道这个物体的真实尺寸(在宽度或高度上的毫米或英寸等值的大小)。

我们应该能够轻松地在图片中找到这个参照物,要么基于参照物的位置(如,参照物可以是一副图像中左上角的物体)或基于参照物的外表(例如参照物可以是图片中具有最独特的颜色或独一无二的形状,不同于所有其他的物体)。

在任何一种情况下,我们的参考应该以某种方式唯一可识别。

在这个例子中,我们将使用美分硬币作为我们的参照物,并且在所有示例中,确保它始终是我们图像中最左边的对象。

图1:我们将使用美分硬币作为参照物,并确保它始终处于图像最左侧位置,这使得我们可以通过对它们位置的轮廓大小进行排序,进一步来提取信息。

通过保证美分硬币是最左边的物体,我们可以从左到右对我们的物体等高线区域进行排列,抓住这个硬币(它将始终对应于排序列表中的第一个等高线区域)。并使用它来定义我们的pixels_per_metric比率,我们将其定义为:

pixels_per_metric =物体像素宽 / 物体真实宽

美分硬币的真实宽度是0.955英寸。现在,假设我们图像中硬币的像素宽为150像素(基于它的相关边界框)。那么这种情况下pixels_per_m

参考实例源码如下:

//#include <stdlib.h>

#include <iostream>

using namespace std

int main()

{

int i,j,k,l=0,n

cout<<"小学数学测试"<<endl

cout<<"请选择想测试的题型:1.+ 2.- 3.* 4./:"

cin>>i

if(i==1)

{

cout<<"请输入测试题的个数:"

cin>>j

for(int k1=0k1<jk1++)

{

srand((unsigned)time(NULL))

int x1=rand()%100

int x2=rand()%100

cout<<x1<<"+"<<x2<<"=:"

cin>>k

if(k==x1+x2){

cout<<"回答正确!"<<endl

l++

}

else

cout<<"回答错误!正确答案为:"<<x1+x2<<endl

}

}

else if(i==2)

{

cout<<"请输入测试题的个数:"

cin>>j

for(int k1=0k1<jk1++)

{

srand((unsigned)time(NULL))

int x1=rand()%100

int x2=x1+rand()%50

cout<<x2<<"-"<<x1<<"=:"

cin>>k

if(k==x2-x1){

cout<<"回答正确!"<<endl

l++

}

else

cout<<"回答错误!正确答案为:"<<x2-x1<<endl

}

}

else if(i==3)

{

cout<<"请输入测试题的个数:"

cin>>j

for(int k1=0k1<jk1++)

{

srand((unsigned)time(NULL))

int x1=rand()%100

int x2=rand()%100

cout<<x1<<"*"<<x2<<"=:"

cin>>k

if(k==x1*x2){

cout<<"回答正确!"<<endl

l++

}

else

cout<<"回答错误!正确答案为:"<<x1*x2<<endl

}

}

else if(i==4)

{

cout<<"请输入测试题的个数:"

cin>>j

for(int k1=0k1<jk1++)

{

srand((unsigned)time(NULL))

int x1=rand()%100+1

int x2=x1*(rand()%10)

cout<<x2<<"/"<<x1<<"=:"

cin>>k

if(k==x2/x1){

cout<<"回答正确!"<<endl

l++

}

else

cout<<"回答错误!正确答案为:"<<x2/x1<<endl

}

}

cout<<"这次测试你作对的题目的个数为"<<l<<"个"<<endl

cout<<"是否继续测试:0.退出 1.继续:"

cin>>n

if(n==1){

return main()}

//system("PAUSE")

return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12192357.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存